小编Jul*_*ian的帖子

在C++中,如果一个函数覆盖虚函数,它是否会自动虚拟化?

我希望如果foo在类中声明D,但没有标记为虚拟,那么下面的代码将调用fooin 的实现D(无论动态类型如何d).

D& d = ...;
d.foo();
Run Code Online (Sandbox Code Playgroud)

但是,在以下程序中,情况并非如此.有谁能解释一下?如果方法覆盖虚函数,它是否会自动虚拟化?

#include <iostream>

using namespace std;

class C {
public:
        virtual void foo() { cout << "C" << endl; }
};

class D : public C {
public:
        void foo() { cout << "D" << endl; }
};

class E : public D {
public:
        void foo() { cout << "E" << endl; }
};

int main(int argc, char **argv)
{
        E& e …
Run Code Online (Sandbox Code Playgroud)

c++ virtual overriding

21
推荐指数
2
解决办法
3130
查看次数

标签 统计

c++ ×1

overriding ×1

virtual ×1