复制构造函数会初始化基本数据类型

时间:2016-04-28 09:44:40

标签: c++11

#include <iostream>

using namespace std;

class Foo
{
public:
        int a;
};
int main()
{
        Foo f;
        Foo f1(f);
        cout<<f.a;
        return 0;
}

这里f.a打印垃圾值,但是当我们添加f1.a时,f.a和f1.a都用0初始化。

#include <iostream>

using namespace std;

class Foo
{
public:
        int a;
};
int main()
{
        Foo f;
        Foo f1(f);
        cout<<f.a<<f.b;
        return 0;
}

请帮助我理解这背后的原因。

2 个答案:

答案 0 :(得分:3)

未初始化的变量具有不确定的值,即发生在该内存中的任何内容。 0是可能的不确定值之一,以及任何其他值。

答案 1 :(得分:0)

复制c-tor不会初始化原始数据类型,只要您没有明确声明它。 未初始化变量的值由属于此变量的RAM空间值确定,因此它可以是任何值。但是这个ram更有可能被设置为0(可能在计算机重启后)。

相关问题