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的带参构造结合在一起 
相关推荐
weixin_307779131 小时前
C++代码实现MATLAB中的dlarray函数功能
开发语言·c++·算法·matlab
一水鉴天4 小时前
映射、哈希表与哈斯图:计算机科学的三种基线 20261003(元宝)
开发语言·人工智能
Frank_refuel4 小时前
C++11之一场名为“搬家”的 C++ 之旅
开发语言·c++
Wang's Blog5 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
2601_962071576 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
hetao17338376 小时前
2026-10-03~04 hetao1733837 的刷题记录
c++·算法
\光辉岁月/7 小时前
5.java-数组
java·开发语言
Java后端的Ai之路7 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
谢亮_vipxieliang7 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
Zootopia6267 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信