2016-04-28 75 views
-1
#include <iostream> 

using namespace std; 

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

这里发版画垃圾值,但是当我们添加f1.a那么这两个FA和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; 
} 

初始化请帮我明白了什么是背后的原因。

+1

你的第二个例子不能编译。请显示真实的代码。 – MSalters

回答

3

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

0

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

+0

不是因为重新启动。每当操作系统为进程分配内存时,它必须用“0”填充内存,以便使用此物理内存的其他进程的敏感信息不会泄漏。 –