当前位置:  开发笔记 > 编程语言 > 正文

为什么以下C++程序打印'0'而不是'6'?

如何解决《为什么以下C++程序打印'0'而不是'6'?》经验,为你挑选了1个好方法。

我有两个叫做FWindowFFramwWindow的课程.该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



1> Alex..:

因为您应该在构造函数中执行以下操作:

FFramwWindow() : FWindow(6)
{
....

在原始代码中,您将创建一个本地(在构造函数范围内)的对象FWindow.


@MohammadShuvo它比那更聪明.需要先初始化成员变量和基类,然后才能在方法体中使用它们.在使用之前,必须准备好使用该对象.成员初始化列表负责处理该问题.
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有