C++11 是所有数据成员都初始化为0,还是由自动调用的构造函数为它们分配了随机值?
当我们不手动调用构造函数时,我尝试检查分配给数据成员的值。a和b都是0,但c都是1,那么数据成员是如何初始化的呢?随机还是0?如果它们被初始化为0,为什么我认为1是c的值C++11 是所有数据成员都初始化为0,还是由自动调用的构造函数为它们分配了随机值?,c++11,C++11,当我们不手动调用构造函数时,我尝试检查分配给数据成员的值。a和b都是0,但c都是1,那么数据成员是如何初始化的呢?随机还是0?如果它们被初始化为0,为什么我认为1是c的值 #include<iostream> using namespace std; class Class { public: int a,b,c; }; int main() { Class obj; cout<<obj.a; cout&l
#include<iostream>
using namespace std;
class Class
{
public:
int a,b,c;
};
int main()
{
Class obj;
cout<<obj.a;
cout<<"\n";
cout<<obj.b;
cout<<"\n";
cout<<obj.c;
return 0;
}
#包括
使用名称空间std;
班级
{
公众:
INTA、b、c;
};
int main()
{
obj类;
cout如前所述,您案例中的默认初始化将导致“未确定”,即未定义的值
编译器将为您提供一个默认构造函数,因为您没有自己定义它,也没有定义任何其他构造函数(在这种情况下它将删除它),但默认构造函数仍将使成员值未定义。您得到0和1-我得到的数字更像1515788312
使用C++11标准,您可以通过直接在类中提供默认值来防止这种情况
#include<iostream>
using namespace std;
class Class
{
public:
int a = 0, b = 0, c = 0;
};
int main()
{
Class obj;
cout<< obj.a << " "
<< obj.b << " " << obj.c << endl;
return 0;
}
#包括
使用名称空间std;
班级
{
公众:
int a=0,b=0,c=0;
};
int main()
{
obj类;
库特
#include<iostream>
using namespace std;
class Class
{
public:
Class() : a(1), b(2), c(3) { }
int a, b, c;
};
int main()
{
Class obj;
cout<< obj.a << " "
<< obj.b << " " << obj.c << endl;
return 0;
}