虚函数的继承
今天的文章相对简单
考虑下面这个程序
class A {
public:
virtual void test() {
cout << "A";
}
};
class B: public A {
public:
void test() {
cout << "B";
}
};
class C: public B {
public:
void test() {
cout << "C";
}
};
int main() {
C c;
B *ptr = &c;
ptr->test();
return 0;
}
那么输出是什么?
再考虑如果我们在B类中test前面加上virtual修饰呢
可能有的同学就会想,如果不加子类就不能重写,加了才可以
所以可能加上virtual,输出就是C,否则输出就是B
但是实际上,无论加还是不加,输出都是C
结论就是只要基类是虚函数,无论子类有没有被virtual修饰,他都是虚函数
按顺序往下继承的
文章评论