class A;
{
private:
    int a;
public:
    virtual int getV() { return a; }
} a;

class C : public A;
{
private:
    int c;
public:
    int getV() { return c; }
} c;

class D
{
public:
   A* liste;
} d;

可以分配liste的内存,并且A::a和C::c是保持值。现在,如果我将c放在D::liste [0]中并给出
cout << d.liste[0].getV();

它显示A::a。尽管我将A::getV()声明为虚拟的,但为什么它却没有打印出C::c?

最佳答案

C++多态仅适用于指针和引用。 liste[0]的类型为A,而不是A*A&,因此liste[0].getV()调用实际上不会分派(dispatch)。它只是调用A::getV()

关于c++ - 多态性,虚方法,C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28087715/

10-13 07:32