在C++中,对象的初始化有以下几种方式:
- 默认初始化:对象以默认值进行初始化,如果是内置类型,则不进行初始化,如果是自定义类型,则调用构造函数进行初始化。
int x; // 内置类型,默认初始化 MyClass obj; // 自定义类型,默认初始化
- 直接初始化:使用构造函数直接初始化对象。
MyClass obj(10); // 调用构造函数 MyClass(int) 初始化对象
- 拷贝初始化:使用等号或括号进行初始化,会调用相应的构造函数。
MyClass obj = anotherObj; // 拷贝构造函数 MyClass obj(anotherObj); // 拷贝构造函数
- 列表初始化(C++11新增):使用花括号进行初始化,可以避免窄化转换。
MyClass obj{10}; // 调用构造函数 MyClass(int) 初始化对象
- 值初始化:对象以零值进行初始化。
int x{}; // 内置类型值初始化为0 MyClass obj{}; // 自定义类型值初始化为默认值
- 聚合初始化:对于聚合类型(数组,结构体等),可以使用花括号进行初始化。
struct MyStruct { int x; int y; }; MyStruct s{1, 2}; // 聚合初始化
以上是C++中对象初始化的几种方式,根据不同的场景选择合适的初始化方式可以提高代码的可读性和效率。