【发布时间】:2014-07-13 20:27:57
【问题描述】:
我正在使用new 为派生类分配内存,
我还想初始化它的基本私有成员
我该怎么做?
class Base {
private:
int value;
}
class Derived : public Base {
....
}
使用基本构造函数的任何聪明方法? 谢谢!
【问题讨论】:
-
在派生类构造函数的初始化列表中调用适当的构造函数。
-
或者有专门的
init()函数 -
你不能,因为
Base没有构造函数没有构造函数允许你设置value。此外,new与此处完全无关。 -
使用
new和调用基本构造函数是独立的问题。或者正如我们所说,它们是正交问题。顺便说一句,即使删除了点,您的类示例在语法上也是无效的。 -
@juanchopanza 那他为什么要问“使用 Base 构造函数”?我假设他可以编写一个构造函数(或至少一个初始化方法),否则这个问题没有多大意义,因为
val在A中是私有的,因此对于B的方法是“不可见的”。
标签: c++ inheritance