第一种情况:
class x
{
public:
x(){}
int mem;
}
第二种情况:
class x
{
public:
int mem;
}
int main()
{
x a;
std::cout << a.mem; //member not initialized error in second case
}
如果我们没有定义默认构造函数,编译器将添加一个;并且构造函数的功能是初始化内存。那么为什么它会在第二种情况下给出错误,而不是在第一种情况下呢?
答案 0 :(得分:2)
在任何一种情况下,成员变量m
都没有被初始化。您需要在构造函数
class x
{
public:
x() : mem{} {}
int mem;
};
答案 1 :(得分:1)
你在课程结束时缺少分号 - 这是你的问题。另外,不要认为默认构造函数会初始化你的成员变量,除非它们也是需要以某种方式初始化的类
class x
{
public:
int mem;
};
int main()
{
x a;
std::cout << a.mem; //member not initialized error in second case
}