C ++使类的成员变量成为子类中的特化

时间:2012-12-17 10:29:55

标签: c++

我有4个班级,

A类(摘要),

B类(摘要),(作为成员变量,类型为向量(A类))

C类,A类的子类

D类,B类的子类

我可以将类D的成员变量重新定义为vector类型(Class C)而不是vector(类A)。相反,成为一个阵列会更好吗?

2 个答案:

答案 0 :(得分:0)

不,你不被允许这样做。由于以下情况,它不起作用:

如果B类中的函数向A类(但不是C类)的向量添加了一个元素,则在基类中允许这样做,但对于特定的子类(C)则不允许,因为类型已经改变。 / p>

答案 1 :(得分:0)

  

我可以将类D的成员变量重新定义为vector类型(Class C)而不是vector(类A)。

不,你不能。一旦在基类中声明了数据成员,它就会以完全相同的形式由所有派生类继承。

您可以做的是将基类成员转换为指针A,并初始化以指向A的实例或{的实例{1}}。