C 中的非初始化类成员会发生什么

What happens to uninitialized class members in c++?

本文关键字:什么 成员 初始化      更新时间:2023-10-16

C 中的非初始化类成员会发生什么?如果我必须这样做,我应该照顾什么?

#include <iostream> 
using namespace std;
class Foo {
    int attr1, attr2;   
public:
    Foo ();
Foo::Foo () {   attr1 = 5; }
Foo myThing(); 

C 中的非初始化类成员会发生什么?

它们是默认初始化的,如果int之类的基本类型,则意味着它具有不确定的值。

我应该照顾什么?

您应该注意永远不要阅读不确定的值。

它们是默认结构的。

对于嵌套类,这意味着这些必须具有一个可以在没有参数的情况下调用的构造函数。

对于普通的旧数据成员(int等),这意味着它们只是像任何其他 local 变量一样,保持不可原始化。