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()
不会虚拟调度呼叫。它只是打电话A::getV()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句