简述C++11就地初始化与列表初始化

C++11 引入了就地初始化和列表初始化,这些初始化操作使得代码更加清晰、类型更加安全。

就地初始化(Uniform Initialization)

就地初始化是一种新的语法,其语法形式为大括号(也称作花括号)括起来的初始化器表达式。

简单类型变量的就地初始化

对于简单类型变量,可以使用就地初始化进行初始化。

int i{10}; // 就地初始化 i 为 10
double d{3.14}; // 就地初始化 d 为 3.14
bool b1{true}; // 就地初始化 b1 为 true
bool b2{false}; // 就地初始化 b2 为 false
char c{'a'}; // 就地初始化 c 为 'a'

类类型的就地初始化

对于类类型变量,也可以使用就地初始化进行初始化。

#include <string>

class Person {
public:
    Person(std::string name, int age): mName(name), mAge(age) {}
private:
    std::string mName;
    int mAge;
};

int main() {
    Person p{"张三", 18}; // 使用就地初始化进行初始化
    return 0;
}

列表初始化(List Initialization)

列表初始化使用花括号括起来的值得列表进行初始化操作。

简单类型变量的列表初始化

对于简单类型变量,可以使用列表初始化进行初始化。

int i{1}; // 就地初始化 i
int j{}; // 就地初始化 j 为零
int k{2.0}; // 编译错误,列表初始化不允许 narrowing 转换

类类型的列表初始化

对于类类型变量,也可以使用列表初始化进行初始化。

#include <string>

class Person {
public:
    Person(std::string name, int age): mName(name), mAge(age) {}
private:
    std::string mName;
    int mAge;
};

int main() {
    Person p{"张三", 18}; // 使用列表初始化进行初始化
    return 0;
}

使用列表初始化可以避免因为类型转换导致无法正确地初始化变量。

综上,就地初始化和列表初始化是 C++11 中引入的一些新的语法,它们使得初始化更加简单明了,同时可以避免类型转换带来的问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简述C++11就地初始化与列表初始化 - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • 根据控件Id得到控件并对该控件进行操作

    根据控件Id得到控件并对该控件进行操作,是Android开发中最常见的操作之一。以下是详细的攻略: 步骤一:在布局文件中定义控件及其id属性 首先,在布局文件中定义需要操作的控件,并为其定义id属性。id属性值可以为任意字符串,但是为了规范,建议使用驼峰式命名法。 示例代码: <TextView android:id="@+id/tv_hel…

    other 2023年6月27日
    00
  • java创建list

    以下是“Java创建List”的完整攻略: Java创建List 在Java中,List是一种常用的数据结构,它可以存储一组有序的元素。本攻略将介绍如何在Java中创建List。 步骤1:导入List类 在创建List之前,您需要导入Java的List类。您可以使用以下代码导入List类: import java.util.List; 步骤2:创建List对…

    other 2023年5月7日
    00
  • Win11右键菜单太大怎么办?Win11右键菜单大小调整方法

    以下是详细的Win11右键菜单大小调整方法完整攻略。 问题描述 在Win11系统中,当我们在桌面或文件资源管理器中右键点击时,弹出的右键菜单可能会显示得过大,这可能会影响我们使用电脑的效率和体验。那么,如何调整Win11右键菜单的大小呢? 方法一:使用“调整所有的菜单尺寸”选项 一种解决方法是通过Windows 11的“调整所有的菜单尺寸”选项来调整右键菜单…

    other 2023年6月27日
    00
  • 自写一个模仿Dictionary与Foreach的实现及心得总结

    下面是“自写一个模仿Dictionary与Foreach的实现及心得总结”的完整攻略: 1. 确定需求和设计实现方案 在开始编码之前,我们需要明确需要实现的功能和数据结构。在这个场景下,我们需要实现两个功能: Dictionary结构,用于存储键值对(key-value pair); Foreach循环,用于遍历数据结构。 针对这些需求,我们需要设计一个能够…

    other 2023年6月25日
    00
  • 使用EFI引导从硬盘(U盘)安装Win7的图文教程(无需光驱)

    下面是使用EFI引导从硬盘(U盘)安装Win7的图文教程(无需光驱)的完整攻略。 环境准备 在进行操作前,需要准备以下工具: 一台电脑,能够正常启动并运行Windows操作系统; 一台USB启动盘,制作方法可以参考其他教程; 一份Win7安装镜像,可以从Microsoft官网或其他渠道下载。 制作启动盘 将USB启动盘插入电脑,并在电脑上运行DiskPart…

    other 2023年6月27日
    00
  • win10 Build 10041技术预览版官方镜像下载地址

    Win10 Build 10041 技术预览版官方镜像下载地址攻略 Win10 Build 10041 是 Windows 10 的技术预览版,本攻略将详细介绍如何获取官方镜像下载地址。 步骤一:访问官方网站 首先,你需要访问微软官方网站以获取 Win10 Build 10041 技术预览版的官方镜像下载地址。以下是示例说明: 打开你的网络浏览器,输入微软官…

    other 2023年8月4日
    00
  • 图片懒加载imgLazyLoading.js使用详解

    图片懒加载imgLazyLoading.js使用详解 什么是图片懒加载? 图片懒加载是指在页面滚动的时候,只加载可视区域内的图片,而不去加载整个页面中的图片,从而提高网页的加载速度和性能。 imgLazyLoading.js的使用方法 引入imgLazyLoading.js文件 将imgLazyLoading.js文件下载并放置于项目中,然后在页面中引入该文…

    other 2023年6月25日
    00
  • 如何在windows7安装u盘中加入usb3.0驱动的支持

    如何在Windows 7安装U盘中加入USB3.0驱动的支持 当我们使用U盘在Windows 7上安装系统时,如果电脑主板支持USB3.0接口,就需要在U盘中加入USB3.0驱动,否则会出现安装过程中U盘无法识别的问题。本文将介绍如何在Windows 7上使用DISM命令将USB3.0驱动集成到U盘中。 准备工作 在开始之前,我们需要准备以下工具: 一台装有…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部