我有两个叫做FWindow和FFramwWindow的课程.该FFramwWindow类继承的FWindow.该FWindow类包含两个构造方法.
第一个是默认构造函数,第二个包含一个int类型的参数.
我从FFramwWindow类的默认构造函数中调用第二个构造函数来初始化名为'value' 的FWindow类的成员变量.
但我不知道它为什么不起作用 -
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
因为您应该在构造函数中执行以下操作:
FFramwWindow() : FWindow(6) { ....
在原始代码中,您将创建一个本地(在构造函数范围内)的对象FWindow
.