C++ 11 新特性之统一初始化语法

2023-11-16

C++  之前的初始化语法很乱,有四种初始化方式,而且每种之前甚至不能相互转换。让人有种剪不断,理还乱的感觉(曾经去面试,就有人问我string有几种初始化方式,当时就说出了两种,fuck,面试官还得意的说,你连基本的初始化方式都记不清,还做啥2dx的开发。当时我就想反驳,但是想想就算了,跟这样的人没必要,估计这人也是被老谭给毒害的一代),黑了那么久的C++初始化方式,大家可能不信,那么现在我就带大家领略一下C++的各种菊紧蛋疼的初始化方式,废话不多说,下面是代码:

1,小括号初始化方法:

    //小括号初始化方法
    int a = int(5);
    string str1 = string("hello");

2,赋值初始化方法:

    int a = 3;
    string str = "hello";

3,POD聚合,也就是经常使用的大括号初始分方法:

int arr[2] = {0,1};

4,构造函数初始化:

class test{
    test(int var1,int var2):a(var1),b(var2){};
private:
    int a;
    int b;
};

OK,以上就是C++03之前的四种初始化方法,当然不是每种类型都有四种初始化方式。具体是那种有那种没有,对不起,我记不清,当然如果你精力够的话,可以自己去分分类啦,然后在记住啦,只要你有时间和精力,就可以啦。看到这里,估计你和我的感受差不多了,感觉这么多种初始化方式没必要呀,为毛不去统一一下,降低学习C++的难度呢?

这不,C++的开发者们急我们之所急,在N年后的C++11中推出了统一初始化方法的新特性(你可能会问:N年后才推出还叫急我们之所急?哈哈,不要在意这些细节啦,说道这里让我想起了范爷的那句经典广告语:统一初始化语法,你值得拥有)。

好的,下面我们就来讲解一下统一初始化方法的使用,老规矩,先上代码(没代码我说个毛):

class test{
    int a ,b,c[4];
    int *d = new int[3]{1,2,3,4};//C++ 11提供的独有的初始化方式
    vector<int> vec = {1,2,3}; //c++ 11 独有的
    map<string, int> _map = {{"hello",1},{"world",2}};//c++ 11 独有的
public:
    test(int i ,int j):a(i),b(j),c{2,3,4,2}{};
};

int main(int argc, const char * argv[])
{
    
    test t{1,2};//初始化test类
    return 0;
}

看完上面的代码,可能你已经发现了一个规律,是什么呢?对了,就是初始化都是用的{}。你可能会问这算毛的规律,但是这就是C++11 采用的策略,即: 一个类型拥有初始化串行建构式( TypeName(initializer_list<SomeType>); ),而初始化串行符合 sequence 建构式的类型,那么它比其他形式的建构式的优先权都来的高。(这句话我也看不太懂,但是文档就这么说的)。

你可能会说这个你也记不住,这里说一下关于统一初始化的总结:

无论是类的变量,数组,stl的容器,类的构造,都统一使用{},以后只要是初始化就首先考虑{}的初始化就OK了。

好了,今天的课程就到这儿(别问我这次为什么没说统一初始化方法需要注意的地方,因为他没有啊,这货就是一个彻头彻尾的好东东啊,哈哈)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 11 新特性之统一初始化语法 的相关文章

随机推荐

  • 中国计算机大会CNCC技术论坛

    第十五届中国计算机大会 CNCC2018 将于 2018 年 10 月 25 27 日在杭州国际博览中心举行 本届大会以 大数据推动数字经济 Big Data Drives the Digital Economy 为主题 探讨计算技术领域最
  • Java-String类的常用方法

    Java String类的常用方法 1 常用方法1 int length 返回字符串的长度 return value length char charAt int index 返回某索引处的字符return value index bool
  • 数据库表字段命名规范

    本文是一篇包含了数据库命名 数据库表命名 数据库表字段命名及SQL语言编码的规范文档 针对研发中易产生的问题和常见错误做了一个整理和修改 为日后涉及到数据库相关的研发工作做好准备 一 数据库命名规范 采用26个英文字母 区分大小写 和0 9
  • 有关深度学习的文章

    https zybuluo com hanbingtao note 485480 https tigerneil gitbooks io neural networks and deep learning zh content chapte
  • OrCAD原理图绘制使用操作

    文章目录 工程的创建 原理图整体设置 调用元器件库 常用元器件库调用 key 一些元器件库介绍 key 常用元器件搜索名 自建元器件库 新建元器件库 新建元器件 绘制元器件管脚设置 key Homogeneous和Heterogeneous
  • 数据结构-树

    目录 树 知识框架 一 树的基本概念 1 树的定义 2 基本术语 3 树的性质 二叉树 一 二叉树的概念 1 二叉树的定义 2 特殊的二叉树 3 二叉树的一些性质 4 二叉树的存储结构 1 顺序存储 2 链式存储 二 二叉树的创建和遍历 1
  • 关于 VTK 7.1.0 + python3.X 的 pycharm 开发环境的搭建

    在此记录一下关于关于 VTK 7 1 0 python3 X 的 pycharm 开发环境的搭建中碰到的问题 一 什么是 VTK 以及支持 python 的版本 VTK visualization toolkit 是一个开源的免费软件系统
  • php7.4安装

    php7 4安装 下载安装编译工具 yum groupinstall Development Tools y 安装依赖包 yum y install libxml2 libxml2 devel openssl openssl devel b
  • Spring Security详解

    Spring Security详解 一 系统安全 二 Spring Security简介 三 案例 1 新建模块 2 导入静态资源 3 编写控制器 实现跳转 4 安全功能实现 认证和授权 权限控制和注销 记住我 一 系统安全 在Web开发中
  • ES6知识点总结二:解构赋值

    3 解构赋值 ES6 允许按照一定模式 从数组和对象中提取值 对变量进行赋值 这被称为解构 数组 const courseArr es6 es7 es8 const a courseArr 0 const b courseArr 1 con
  • 2023计算机毕业设计选题推荐——Java项目

    A170 536 springboot新冠物资管理系统 A171 537 基于SSM的社区疫情防控平台 A172 538 ssm民宿预订管理系统 A173 539 ssm网上水果生鲜超市商城 A174 540 ssm线上跳蚤市场平台 A17
  • C++万能头文件#include<bits/stdc++.h>

    include
  • 发放金币(循环)

    分享一下个人思路 如果拿1金币 可以拿1天 2金币拿两天 n金币拿n天 也就是说 我们要拿n金币 从当前的天数开始循环n次 每次拿n 每次拿完之后天数 1 include
  • 微信小程序之获取用户位置权限(拒绝后提醒)

    小编推荐 Fundebug专注于JavaScript 微信小程序 微信小游戏 Node js和Java实时BUG监控 真的是一个很好用的bug监控费服务 众多大佬公司都在使用 微信小程序获取用户当前位置有三个方式 1 wx getLocat
  • Google guava之Table简介说明

    转自 Google guava之Table简介说明 下文笔者讲述guava中Table集合的简介说明 如下所示 guava之Table集合简介 Table集合 用于存储数据表 类似于Map
  • 报错异常:java.lang.NoClassDefFoundError

    一 问题背景 由原先的jdk1 8升级至jdk20 启动项目登录后台出现报错问题 org springframework web util NestedServletException Handler dispatch failed nes
  • HttpClient介绍

    本文内容整理自 https blog csdn net w372426096 article details 82713315 HttpClient相比传统JDK自带的URLConnection 增加了易用性和灵活性 它不仅使客户端发送Ht
  • WIN10-22H2专业版_电脑维修人员专用装机系统镜像【04.20更新】

    WIN10 22H2专业版是由站长亲自封装的电脑维修人员专用装机系统镜像 系统干净无广告 稳定长效不卡顿 适合电脑维修店用来维修电脑重装系统 此版本是WIN10系统里非常稳定的正式版本之一 适合在维修电脑时重装系统或者大批量装机使用 本次封
  • 服务器入门

    GPU工作站 服务器 1 cdot 1 1 型号 AMD宵龙 RTX3090 为例 内存类型 REG 内存 8个DIMM DDR4插槽 3200高频内存 gt system长时间稳定运作 存储 8个 3 5英寸驱动 8块3 5存硬盘 2个N
  • C++ 11 新特性之统一初始化语法

    C 之前的初始化语法很乱 有四种初始化方式 而且每种之前甚至不能相互转换 让人有种剪不断 理还乱的感觉 曾经去面试 就有人问我string有几种初始化方式 当时就说出了两种 fuck 面试官还得意的说 你连基本的初始化方式都记不清 还做啥2