纯静态网站是有什么程序做的,cms 多个网站,手机商场网站制作,大连企业制作网站不管是为了统一性#xff0c;还是避免发生窄化转换#xff0c;尽可能使用初始化列表。 说明哪些对象可以使用列表初始化#xff1f;代码演示 说明
C11 引入了列表初始化#xff08;也称为统一初始化或初始化列表#xff09;#xff0c;它是一种使用花括号 {} 来初始化对… 不管是为了统一性还是避免发生窄化转换尽可能使用初始化列表。 说明哪些对象可以使用列表初始化代码演示 说明
C11 引入了列表初始化也称为统一初始化或初始化列表它是一种使用花括号 {} 来初始化对象的语法例如 int a{5}; 。
列表初始化的优点包括初始化对象时不允许发生窄化转换例如将 double 隐式转换为 int 时丢失精度
能够初始化任何对象只要它支持适当的构造函数或有合适的初始化器列表重载。
哪些对象可以使用列表初始化
几乎所有类型的对象都可以使用列表初始化包括
基本数据类型如 int、double 等类对象如果有适当的构造函数数组STL 容器如 std::vector, std::map 等初始值列 std::_list :轻量级的容器类型专门设计来接收花括号初始化列表中的元素可以接收一个任意长度的同类型元素列表。C11
代码演示
#include iostream
#include vector
#include initializer_list// 一个简单的类展示带有构造函数的列表初始化
class MyClass {
public:MyClass(std::initializer_listint lst) {for (auto elem : lst) {std::cout elem ;}std::cout \n;}
};void print(std::initializer_listint vals) {for (auto p vals.begin(); p ! vals.end(); p) {std::cout *p \n;}
}int main() {// 基本数据类型的列表初始化int a{ 5 };double b{ 3.14 };char c{ A };// 不允许窄化转换// int d{3.14}; // 错误窄化转换// 类对象的列表初始化MyClass obj{ 1, 2, 3, 4, 5 };// 数组列表初始化int arr[]{ 1, 2, 3, 4, 5 };// STL 容器的列表初始化std::vectorint vec{ 1, 2, 3, 4, 5 };//初始值列print({ 1, 2, 3, 4, 5 }); // 使用花括号初始化列表// 打印演示std::cout a: a \n b: b \n c: c \n;std::cout arr: ;for (auto elem : arr) {std::cout elem ;}std::cout \n;std::cout vec: ;for (auto elem : vec) {std::cout elem ;}std::cout \n;return 0;
}
运行结果