202308

20230826日志

2023年8月26日
2023
202308, C++

caution # int guess(12) 与 int guess{12} 的区别 在C++中,这两种方式的区别是: int guess(32); 是使用构造函数初始化 int guess{32}; 是使用统一初始化语法 构造函数初始化方式调用int的构造函数,使用括号中的值32来初始化guess。 统一初始化语法不需要调用构造函数,直接使用大括号{}初始化guess为32。 两者的结果是相同的,都将guess初始化为整数32。 主要区别在于: 构造函数初始化只适用于有构造函数的类类型,而统一初始化语法可以用于任何类型。 统一初始化语法可以防止隐式类型转换。例如int guess(3.14)会把3.14转为3,而int guess{3.14}在编译时会报错。 统一初始化语法在某些情况下会进行值初始化(将变量初始化为类型的默认值),构造函数初始化则总是直接初始化。 统一初始化语法可以初始化数组和聚合类型。 所以通常来说,统一初始化语法更为通用和安全,C++11后推荐使用统一初始化语法,而不是构造函数初始化 强制类型转化 (type) expression type(expression) static_cast<type>(expression) auto 含义转变 C 中表示内存自动分配释放 C++ 中表示类型自动推导 基本类型 整型从小到大, bool, char, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long ...