1 概述
在C++11中,可以使用多种方式来初始化对象。以下是一些常见的初始化方法:
2 列表初始化(Uniform Initialization)
int a{10}; // 列表初始化一个整数
int b = {10}; // 同样的,这也是列表初始化std::string str{"Hello, World!"}; // 列表初始化一个字符串对象// 结构体和类的列表初始化
struct Point {int x, y;
};Point p{10, 20}; // 使用列表初始化结构体
3 默认构造函数初始化
int a{}; // 默认构造一个整数,值为0std::string str{}; // 默认构造一个空字符串Point p{}; // 默认构造结构体
说明:如果类型是对象,可以省略{}
4 值初始化(Value Initialization)
int a(0); // 值初始化一个整数std::string str = ""; // 值初始化一个空字符串Point p = Point(); // 值初始化结构体
5 直接初始化
int a = 10; // 直接初始化一个整数std::string str = "Hello, World!"; // 直接初始化一个字符串Point p = {10, 20}; // 直接初始化结构体
6 拷贝初始化
int a = a1; // 拷贝初始化一个整数std::string str = str1; // 拷贝初始化一个字符串Point p = p1; // 拷贝初始化结构体
7 总结
在实际应用中,选择哪种初始化方式取决于具体的需求和上下文。列表初始化通常用于明确指定初始化值,而默认构造函数初始化则用于创建具有默认值的对象。直接初始化和拷贝初始化则根据是否使用等号和是否为原始数据类型有所区别。值初始化通常用于变量声明而不是对象初始化。