dar*_*613 2 c++ arrays oop constructor struct
假设我建立了一个C ++类,如下所示:
class Foo{
public:
struct Pair{
int x;
int y;
Pair(){ x = 2; y = 4; }
};
private:
Pair pairArr[16];
}
Run Code Online (Sandbox Code Playgroud)
如果不另外初始化pairArr,则其中的Pair结构的默认值是什么?C ++是调用构造函数(用x = 2,y = 4初始化它)还是尚未创建对象,使我剩下一个“垃圾”对象数组,直到我自己初始化索引为止?
我知道这是否是原始数据类型的数组,它们是默认初始化的(如果我有一个整数数组,它们都将为0)。但是,我不知道这种行为是否适用于像我的struct这样的更复杂的对象。
类和结构在c ++中是等效的,只是默认的访问说明符有所不同。因此,检查Arrays和Classes,它说:
普通的数组声明样式对数组中的每个对象使用默认的构造函数(如果该类具有默认的构造函数)
从实际的角度来看,请在您的结构中执行此操作:
Pair() : x(2), y(4) { std::cout << "Called\n"; }
Run Code Online (Sandbox Code Playgroud)
您将看到该消息被打印16次。
当您想知道调用的内容(通常是它们的顺序)时,这是一种常用的方法(将打印消息添加到构造函数到析构函数)。
提示:使用初始化列表,而不是在构造函数的主体内分配值。