More than code

More Than Code
The efficiency of your iteration of reading, practicing and thinking decides your understanding of the world.
  1. 首页
  2. daily
  3. 正文

Daily C/C++ 虚函数的继承

2021年5月16日 560点热度 0人点赞 0条评论

虚函数的继承

今天的文章相对简单

考虑下面这个程序

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修饰,他都是虚函数

按顺序往下继承的

标签: c++
最后更新:2021年5月16日

sheep

think again

点赞
< 上一篇
下一篇 >

文章评论

取消回复

COPYRIGHT © 2021 heavensheep.xyz. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS