继承关系中派⽣类重写基类(成员函数和虚函数)我们知道,要想重写基类的虚函数,函数名称、参数、返回类型必须相同,才能够实现多态。反腐倡廉的电视剧
class a {
public:
a() = default;
农村种植virtual void display(int a)const {
std::cout << " A virtual" << std::endl;
}
};
class b :public a {
public:
b() = default;
void display(int a)const {
std::cout << " B" << std::endl;
}
};
class c :public b {
public:
c() = default;
//very very nice
void display(int a)const override{
std::cout << "C virtual" << std::endl;
}
};
椭圆焦点公式int main() {
a* ptr = nullptr;
b cond;
ptr = &cond;
ptr->display(2.3);
c third;
ptr = &third;
ptr->display(2.3);
这⾥要注意:b类中重载时什么关键字都没有写,vitual和override都没有,但依然会别当作虚函数。
这是我们知道的,那么如果不相同会怎么样呢?
这⾥就不贴例⼦了,记住⼀点,只要和上⾯例⼦中不同的,都会别当作⾮虚成员函数来处理。
最穷的国家⽐如,如果我在b类中是这样写:
virtual void display(double a)const{
表达用英语怎么说.......
}
这个函数依然会被当作⾮虚成员函数来处理。
下⾯是我的总结,可能写的不太容易理解:
/*总结:
⽗类为虚函数时,女生自拍
⼦类中,
1.当名称相同,是不是virtual都⼀样,但是参数不同时,编译会将其当作⾮虚成员函数进⾏处理
帮助睡眠的方法
2.如果名称相同,是不是virtual都⼀样,参数相同,都是对虚函数的重写,这⾥要注意的是,就算不加vitual,不加override也是从写虚函数
⽗类为⾮虚函数时,黄焖鸡腿
3.如果⼦类为同名同参虚函数,编译器依然会将其当作⾮虚成员函数来处理,就算后⾯的函数也是如此,依然是⾮虚成员函数来处理
4.如果⼦类为同名不同参虚函数,和上⾯相同的结果
所以呢,只有当名称相同,并且参数相同的虚函数时,才能作为虚函数,实现多态。*/