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/