【发布时间】:2010-09-13 08:32:06
【问题描述】:
class Base{
public:
void counter();
....
}
class Dervied: public Base{
public:
....
}
void main()
{
Base *ptr=new Derived;
ptr->counter();
}
为了识别基类指针指向派生类并使用派生成员函数,我们使用“虚拟”。
同样,我们可以将派生数据成员设为“虚拟”吗? (数据成员是公开的)
【问题讨论】:
-
显而易见的问题是为什么?它有什么需要?可能有其他方法可以解决这个问题。
-
你(通常)不应该使用公共数据成员,而是使用访问器——因此你甚至不需要这个。
-
请在您的伪代码中的某处添加单词
virtual。 -
@Georg:废话,公共数据成员有他们的位置。
-
@andre:只是一个想法:虚拟数据成员可以用于 mixins 或鸭子类型。当
A和B两个类都定义virtual int count时,继承A 和B 的派生类只能携带一个(因为它是虚拟的)count成员。为此,基类要么需要具有兼容的布局,要么编译器可以自动创建同步两个基类的值的 getter/setter。
标签: c++ inheritance