C++11新初始化方法 使用{}初始化变量

风陵南·2024-09-04 09:44·70 次阅读

C++11新初始化方法 使用{}初始化变量

列表初始化

在C++11及以后的版本中,使用{}来初始化变量是一种新的初始化方法,称为列表初始化(List Initialization)。这种初始化方法可以用来初始化内置类型、自定义类型以及聚合类型。

示例代码:

Copy
/*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;

使用列表初始化还有一些优点:

  • 更清晰的语法:使用{}明确表示变量的初始化过程。
  • 避免类型收窄:列表初始化不允许将值初始化为不匹配的类型,这有助于防止某些类型的错误。

下面是一些列表初始化的例子:

Copy
int a{}; // a 初始化为 0
int b{42}; // b 初始化为 42
double c{1.2}; // c 初始化为 1.2
TreeNode *left{}; // left 初始化为 nullptr

在构造函数初始化列表中{}也可以用来初始化成员变量,上述代码的构造函数中:

Copy
TreeNode(int x) : val(x), height(0), left(nullptr), right(nullptr) {}

这里,height被初始化为0,leftright被初始化为nullptr。如果成员变量的类型支持列表初始化,并且想要将它们初始化为默认值,也可以使用{}来替代赋值:

Copy
TreeNode() : val{}, height(0), left{}, right{} {}

注意height不能使用{}进行初始化,因为在其定义时未使用列表初始化。

posted @   风陵南  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示