首页 > 编程语言 >C++11新初始化方法 使用{}初始化变量

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

时间:2024-09-04 09:48:06浏览次数:8  
标签:11 初始化 TreeNode val int C++ 列表 left

列表初始化

在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,leftright被初始化为nullptr。如果成员变量的类型支持列表初始化,并且想要将它们初始化为默认值,也可以使用{}来替代赋值:

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

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

标签:11,初始化,TreeNode,val,int,C++,列表,left
From: https://www.cnblogs.com/1873cy/p/18395831

相关文章

  • A-计算机毕业设计定制:76114客户关系管理系统(免费领源码)可做计算机毕业设计JAVA、PHP
    摘 要 随着信息化时代的发展,各行各业都逐渐意识到客户关系管理的重要性。传统的客户管理方式已经无法满足日益增长的客户群体及复杂的业务需求。因此,客户关系管理系统应运而生,以提高服务质量、降低成本、促进营销活动,并实现客户与企业之间更紧密的互动。本文主要探讨如何......
  • C++ 数据结构——二叉树(最最最最最实用的二叉树教程)
    本文章以实用为主,所以不多废话直接开整本文所介绍的二叉树是最基础的二叉树,不是二叉搜索树,也不是平衡二叉树,就基本的二叉树若需要Python版,请跳转到 Python数据结构——二叉树(最最最最最实用的二叉树教程)二叉树的构建二叉树为一个父节点连接到两个子节点,若还要加入新的......
  • c++病毒/恶搞代码大全
    注:以下代码应勿用于非法(Dev-c++5.11实测可用)0.效果:无限生成cmd解决方法:关闭程序即可Code:#include<bits/stdc++.h>#include<windows.h>usingnamespacestd;intmain(){  while(1)system("startcmd");}1.效果:使鼠标所点应用消失解决方法:暂无Code:#inclu......
  • 一个C++的 线程基类
      #include<iostream>#include<thread>#include<mutex>#include<condition_variable>#include<atomic>classThreadBase{public:ThreadBase():thread_(nullptr),stopFlag_(false){}virtual~ThreadBase(){......
  • C语言零基础入门教程——02 C语言开发环境的配置(Dev C++超详细安装教程)
    文章目录前言DevC++安装一、软件介绍二、软件下载三、软件安装结语前言编写代码一般需要在特定的工具即集成开发环境(IDE)上进行,它可以帮助程序员更高效地编写一些程序,因此在编写程序之前,我们需要安装相应的开发工具从而配置开发环境,考虑到高校教学都广泛使用DevC+......
  • c++实现生产者&消费者的供需关系
    一、生产者&消费者模式生产者-消费者模式(Producer-ConsumerPattern)是一种常见的并发设计模式,这种模式最常见,所以把它单独拿出来,这种模式用于处理生产者和消费者之间的协调问题。生产者和消费者之间不直接关联或依赖,而是用一个第三方来协调双方的供需关系。这种模式解决了生产......
  • Linux C++ 开发7 - GDB常用命令汇总(你想了解的都在这)
    1.运行命令2.设置断点3.查看源码4.打印表达式5.查看运行信息5.1.设置和查看运行参数的Demo6.分割窗口7.参考文档上一篇《LinuxC++开发6-GDB调试》中我们讲解了GDB的调试流程和常用的调试方法。GDB的调试指令众多,我们这里针对常用的指令做一个汇总(按功能......
  • Linux C++ 开发7 - GDB常用命令汇总(你想了解的都在这)
    1.运行命令2.设置断点3.查看源码4.打印表达式5.查看运行信息5.1.设置和查看运行参数的Demo6.分割窗口7.参考文档上一篇《LinuxC++开发6-GDB调试》中我们讲解了GDB的调试流程和常用的调试方法。GDB的调试指令众多,我们这里针对常用的指令做一个汇总(按功能分......
  • 【C++】_vector定义、_vector常用方法解析
    不管心情如何,不论今天过得怎么样,无论身在何方,请记得...微笑!......
  • C++STL
    1.1STL初识STL(StandardTemplateLibrary,标准模板库)STL从广义上分为:容器(container)算法(algorithm)迭代器(iterator)容器和算法之间通过迭代器进行无缝连接STL几乎所有代码都采用了模板类或者模板函数1.2STL六大组件STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器......