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的带参构造结合在一起 
相关推荐
麻瓜code5 小时前
【JUC】AQS enq() 自旋入队
java
Zenova EdgeOS5 小时前
Python 工业边缘 redis-py 异步实战
开发语言·redis·python
huang5791476 小时前
哈希算法的抗碰撞机制与安全性增强策略4
算法
Wang's Blog6 小时前
Java框架快速入门: Spring Security+OAuth2之核心角色与授权流程
java·spring·github
hai_android6 小时前
Kotlin Flow combine 源码剖析:一个 Channel 如何优雅合并多条流
android·java·kotlin
caoerzhong6 小时前
JeeWMS 开源仓库管理系统权限与域验证解析:Java WMS 如何把数据权限管到仓、货主与人
java·python·开源·vue
林浩杨_6 小时前
SIGIR 2026|南京大学:Video-GAR:“通过生成 Query 来验证视频语义理解”的生成增强范式
论文阅读·人工智能·算法
君顾16 小时前
西安 24 小时自助健身房系统开发实战指南
java·开发语言·健身房
用户094248568036 小时前
第9章:OpenJDK堆分代与 Serial/Parallel GC 基础
java·jvm
Wang's Blog6 小时前
Java框架快速入门: Spring Security+OAuth2之RBAC与角色分层实践
java·网络·spring