C++11(初始化)

文章目录

C++11初始化

{}初始化

C++98中{}可以对数组或结构体进行初始化

C++11想要统一初始化方式,试图实现用{}初始化一切对象

{}初始化也称为列表初始化,支持内置类型和自定义类型,自定义类型本质上是类型转换,产生临时对象,优化后变为直接构造

列表初始化可以省去=,而且禁止窄化转换,比如double转为int,保证精度

initializer_list

上面的列表初始化是面向单个对象的,初始化容器时需要对元素逐个调用构造函数

由此推出了initializer_list,容器支持含initializer_list的构造函数,就可以直接对任意个值组成的{}进行初始化,

本质是开一个数组,将数据拷贝过来,initializer_list用两个指针指向数组头尾

cpp 复制代码
int a{10};//内置类型 省略= 初始化
double b{3.14};
// int c{3.99};//禁止窄化转换,直接报错

int arr[]{1,2,3};//数组初始化

struct Stu
{
    int id;
};
Stu s{1001};//结构体初始化

class MyClass
{
public:
    MyClass(int x){}
};
MyClass obj{666};//自定义类 列表初始化

map<int,string> my_map{{1,"张三"},{2,"李四"}};//pair对象的{}初始化和map的带参构造结合在一起 
相关推荐
AI科技星1 小时前
基于全域数学公理体系求解三元约束极值题【乖乖数学】
人工智能·算法·机器学习·密码学·拓扑学·乖乖数学·全域数学
Lhappy嘻嘻8 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
科技道人8 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
伊玛目的门徒8 小时前
试用leetcode之典中典 二数之和问题
java·算法·leetcode
Jerry9 小时前
LeetCode 226. 翻转二叉树
算法
想做小南娘,发现自己是女生喵10 小时前
【无标题】
数据结构·算法
逝水无殇10 小时前
C# 异常处理详解
开发语言·后端·c#
懒鸟一枚11 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
Kx_Triumphs12 小时前
HDU4348 To the moon(主席树区间修改模板)
算法·题解