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的带参构造结合在一起 
相关推荐
To_OC2 小时前
LC 1 两数之和:面试第一道必考题,暴力解法直接被面试官 pass
javascript·算法·leetcode
用户128526116026 小时前
我把祖传Java项目重构后,接口响应从3s砍到了200ms,只改了这几行代码
java
鱼鱼不愚与6 小时前
《原来如此 | 第01期:为什么导航软件能预测红绿灯倒计时?》
算法
Linsk6 小时前
组件 = 模板 + 业务逻辑
java·前端·vue.js
星沉远浦7 小时前
用Gemini高效解决Java代码报错难以定位的问题
java
博客18009 小时前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
用户2986985301411 小时前
Word 文档字符级格式化:Java 实现方案详解
java·后端
郝学胜_神的一滴11 小时前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
复杂网络11 小时前
论最小 Agent 计算机的形态
算法
笨鸟飞不快11 小时前
从单个服务到集群:一次完整的性能排查复盘
java·前端