结构默认构造函数:它会使用默认值来初始化我的成员,即'零'

Tha*_*Guy 0 c++ constructor struct language-lawyer

我正在学习构造函数,我需要澄清一下.我可以在不指定构造函数的情况下构建结构如下:

 struct MyStruct {
 int member;
 }
Run Code Online (Sandbox Code Playgroud)

当我创建此结构的对象时,生成的默认构造函数将不会初始化member为默认值,除非在用户定义的构造函数中明确说明,对吗?这样:

MyStruct object;
cout<<object.member<<endl;
Run Code Online (Sandbox Code Playgroud)

将根据运行时存储在该内存地址中的内容输出一些随机值,对吗?

我的最后一个问题是,如果我没有显式地声明和定义构造函数,那么生成的构造函数会member在创建对象时初始化MyStruct还是member未初始化?

Som*_*ken 5

是的,内置类型不是由编译器生成的构造函数初始化的.

编译器生成的构造函数与以下内容完全相同:

MyStruct() {}
Run Code Online (Sandbox Code Playgroud)

MyStruct.member然后访问会导致未定义的行为.你应该明确地初始化member:

MyStruct() : member(0) {}
Run Code Online (Sandbox Code Playgroud)