C++11新初始化方法 使用{}初始化变量
列表初始化
在C++11及以后的版本中,使用{}
来初始化变量是一种新的初始化方法,称为列表初始化(List Initialization)。这种初始化方法可以用来初始化内置类型、自定义类型以及聚合类型。
示例代码:
/*AVL 树节点类*/ struct TreeNode{ int val{}; int height = 0; TreeNode *left{}; TreeNode *right{}; TreeNode() = default; TreeNode(int x) : val(x), height(0), left(nullptr), right(nullptr) {} };
示例中,int val{}
使用初始化列表来初始化val
变量。这里{}
表示空列表,它将val
初始化为0,这是整型的默认值。这是等价于使用int val = 0;
。
使用列表初始化还有一些优点:
- 更清晰的语法:使用
{}
明确表示变量的初始化过程。 - 避免类型收窄:列表初始化不允许将值初始化为不匹配的类型,这有助于防止某些类型的错误。
下面是一些列表初始化的例子:
int a{}; // a 初始化为 0 int b{42}; // b 初始化为 42 double c{1.2}; // c 初始化为 1.2 TreeNode *left{}; // left 初始化为 nullptr
在构造函数初始化列表中{}
也可以用来初始化成员变量,上述代码的构造函数中:
TreeNode(int x) : val(x), height(0), left(nullptr), right(nullptr) {}
这里,height
被初始化为0,left
和right
被初始化为nullptr
。如果成员变量的类型支持列表初始化,并且想要将它们初始化为默认值,也可以使用{}
来替代赋值:
TreeNode() : val{}, height(0), left{}, right{} {}
注意height
不能使用{}
进行初始化,因为在其定义时未使用列表初始化。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库