【发布时间】:2015-12-06 16:55:15
【问题描述】:
我有两个名为 FWindow 和 FFramwWindow 的类。 FFramwWindow 类继承了 FWindow。 FWindow 类包含两个构造方法。
第一个是默认构造函数,第二个包含一个 int 类型的参数。
我从 FFramwWindow 类默认构造函数中调用第二个构造函数来初始化 FWindow 类的一个名为“value”的成员变量。
但我不知道为什么它不起作用 -
class FWindow {
public:
int value;
FWindow()
{
this->value = 0;
}
FWindow(int val)
{
this->value = val;
}
};
class FFramwWindow : public FWindow
{
public:
FFramwWindow()
{
FWindow::FWindow(6);
printf("value %d\n", this->value);
}
};
int main(int argc, _TCHAR* argv[])
{
FFramwWindow obj;
return 0;
}
上面的代码打印-value 0
我预计它会在哪里打印 - value 6
似乎它只调用了默认的基类构造函数,而不是我明确调用的第二个。
注意:我使用的是 Visual Studio 2008
【问题讨论】:
-
为什么要投反对票?我认为 C++ 将允许我在派生类构造函数体内显式调用基类构造函数。我想我可以用这种方式调用类构造函数 - 'FWindow::FWindow()' 就像我们调用基类析构函数一样。例如 - 'FWindow::~FWindow()'。如果 'FWindow::FWindow()' 创建一个本地对象,那么 'FWindow::~FWindow()' 会创建一个本地对象吗?
标签: c++ oop constructor