小编ano*_*ous的帖子

覆盖vs虚拟

在函数前使用虚拟词virtual的目的是什么?如果我想让子类覆盖父函数,我只需声明相同的函数,如void draw(){}.

class Parent { 
public:
    void say() {
        std::cout << "1";
    }
};

class Child : public Parent {
public:
    void say()
    {
        std::cout << "2";
    }
};

int main()
{
    Child* a = new Child();
    a->say();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出为2.

那么,为什么保留字virtual在标题中是必要的say()呢?

谢谢一堆.

c++ virtual overriding function

39
推荐指数
5
解决办法
4万
查看次数

标签 统计

c++ ×1

function ×1

overriding ×1

virtual ×1