当前位置: 首页 > 编程日记 > 正文

C++11 初始化

C++11 初始化

统一初始化语法
        C++11新添加初始化列表 std::initializer_list<>类型,可以通过{}语法来构造初始化列表 。初始化列表是常数;一旦被创建,其成员均不能被改变,成员中的数据也不能够被变动。函数能够使用初始化列表作为参数。
        在引入C++ 11之前,有各种不同的初始化语法。在C++ 11中,仍可以使用这些初始化语法,但也可以选择使用新引入的统一的初始化语法。统一的初始化语法用一对大括号{}表示。
        std::vector<string> v1 = {"hello", "world", "welcome"};
        std::vector<int> v2 = {0, 3, 8, 1, 4};

// 注: vs2012 不支持统一初始化方式{}

类内成员初始化

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
#include <string>
#include <vector>
#include <map>class Mem
{
public:Mem(int i, int j): m(i), n(j) // 初始化列表给m初始化, 可以给const变量赋初值, 以及引用变量赋初值
    {// m = i; 错误,不能给const变量赋值// n = j; 错误,不能给引用变量赋值
    }int getM(){std::cout << "m: " << m << std::endl;}const int m;int &n;
};void mytest()
{int data = 1; // 使用"="初始化非静态普通成员,也可以 int data{1};Mem Mem{2, data}; // 对象成员,创建对象时,可以使用{}来调用构造函数 // 注: vs2012 不支持统一初始化方式{}std::string name("xyz"); // 使用()来调用构造函数return;
}int main()
{mytest();system("pause");return 0;
}

列表初始化
C++11引入了一个新的初始化方式,称为初始化列表(List Initialize),具体的初始化方式如下:

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
#include <string>
#include <vector>
#include <map>class Person
{
public:std::string name;int age;
};void mytest()
{int a[] = {4,5,6};int b[]{1,3,5}; // 注: vs2012 不支持int i = {1};int j{3}; // 注: vs2012 不支持// 初始化列表可以用于初始化结构体类型Person p1 = {"Frank", 25};std::vector<int> ivec1(3,4);// 其他一些不方便初始化的地方使用,比如std<vector>的初始化,如果不使用这种方式,只能用构造函数来初始化,难以达到效果std::vector<int> ivec2 = {5,5,5}; // 注: vs2012 不支持std::vector<int> ivec3 = {1,2,3,4,5}; // 注: vs2012 不支持return;
}int main()
{mytest();system("pause");return 0;
}

防止类型收窄
类型收窄指的是导致数据内容发生变化或者精度丢失的隐式类型转换。使用列表初始化可以防止类型收窄。

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
#include <string>
#include <vector>
#include <map>void mytest()
{const int x = 1024;const int y = 10;char a = x; // 收窄,但可以通过编译char *b = new char(1024); // 收窄,但可以通过编译char c = {x}; // err,收窄,无法通过编译char d = {y}; // 可以通过编译unsigned char e{-1}; // err,收窄,无法通过编译float f{7}; // 可以通过编译int g{2.0f}; // err,收窄,无法通过编译float * h = new float{1e48}; // err,收窄,无法通过编译float i = 1.21; // 可以通过编译return;
}int main()
{mytest();system("pause");return 0;
}

相关文章:

使用C#开发Socket通讯

下面的示例显示如何使用 Socket 类向 HTTP 服务器发送数据和接收响应。 [C#] public string DoSocketGet(string server) { //Sets up variables and a string to write to the server Encoding ASCII Encoding.ASCII; string Get "GET / HTTP/1.1/r/nHost: "…

激光雷达与相机:哪个最适合自动驾驶汽车?

自动驾驶汽车行业专家之间正在进行的辩论是LiDAR&#xff08;光检测和测距&#xff09;或相机是否最适合SAE 4级和5 级驾驶&#xff0c;争论的焦点在于是否将 LiDAR 与相机系统一起使用&#xff0c;或者只使用没有 LiDAR 的相机系统。LiDAR 的支持者包括 Waymo、Cruise、Uber 和…

Windows系统安装Oracle 11g客户端

一.下载 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html以下网址来源此官方下载页网。 win 32位操作系统 下载地址&#xff1a;http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_client.zip 二.安装oralce客户端 1.点击…

What’s new: Windows Phone 7 与 Windows Phone 6.5功能对比

在engadget看到一篇Windows Phone 7和Windows Moible 6.5比较的表格&#xff0c;觉得挺不错&#xff0c;blog下来。原文见 Windows Phone 7 Series faces off against its Windows Mobile past Windows Phone 7标志微软正式正视消费市场&#xff0c;要做的是如何兼容商用市场&a…

几经沉浮,人工智能前路何方?

来源 | 算法进阶人工智能将和电力一样具有颠覆性 。——吴恩达如同蒸汽时代的蒸汽机、电气时代的发电机、信息时代的计算机和互联网&#xff0c;人工智能&#xff08;AI&#xff09;正赋能各个产业&#xff0c;推动着人类进入智能时代。本文从介绍人工智能及主要的思想派系&…

C#中的转义字符

a 警铃 /b 退格 /f 换页 /n 新的一行 /r 回车 /t 水平制表符 /v 垂直制表符 /0 空 / 单引号 / 双引号 // 反斜线符号 /r/n回车换行

红外控制GPIO

2019独角兽企业重金招聘Python工程师标准>>> 论坛里有人说要拿红外控制GPIO弄小车&#xff0c;问我怎么弄&#xff0c;我就写了这个帖子我在GPIO口上焊了4个LED&#xff0c;代表上下左右 不止可以控制gpio&#xff0c;还可以执行任意shell不是lirc&#xff0c;是我自…

思科OSPF辅助地址

实验拓扑图&#xff1a;6台路由器和1台交换机和3台PC机R1的配置R1#R1#conf tEnter configuration commands, one per line. End with CNTL/Z.R1(config)#int e0/0R1(config-if)#ip address 192.168.2.1 255.255.255.0R1(config-if)#no sh R1(config-if)#int e0/1R1(config-if)…

赠书 | GNN 模型在生物化学和医疗健康中的典型应用

计算生物化学和医疗健康的数据常常通过图来表示。例如&#xff0c;分子和化合物可以自然地表示为以原子为节点、以键为边的图。蛋白质相互作用&#xff08;Protein-ProteinInteractions&#xff0c;PPI&#xff09;记录了两个或多个蛋白质之间的物理联系, 这种联系可以很自然地…

C#控制远程计算机的服务

在.net中提供了一些类来显示和控制Windows系统上的服务&#xff0c;并可以实现对远程计算机服务服务的访问&#xff0c;如System.ServiceProcess命名空间下面的ServiceController 类&#xff0c;System.Management下面的一些WMI操作的类。虽然用ServiceController可以很方便的实…

百度WordPress结构化数据插件上线

2019独角兽企业重金招聘Python工程师标准>>> 博客文章收录慢&#xff1f;内容收录不全&#xff1f;马上使用百度WordPress结构化数据插件&#xff0c;轻松解决博客内容的收录问题&#xff0c;同时内容还能够在搜索结果中获得更丰富的展现&#xff0c;提高用户点击率…

MailMail、RegeX等程序的云端版

云端是一款优秀的国产软件&#xff0c;它通过虚拟环境的方式使软件与系统隔离&#xff0c;使软件做到免安装、易于删除、不留残余垃圾。 &#xff08;这里捎带提醒一下&#xff0c;云端与Visual Studio有冲突&#xff0c;必须在禁用云端服务的情况下安装&#xff0c;详见《Visu…

java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题

2019独角兽企业重金招聘Python工程师标准>>> /* * 几大原则 * 一、静态成员变量&#xff08;Static&#xff09; * 1、静态成员变量为类变量&#xff0c;所有对象共享同一内存空间 * 2、静态成员变量的声明和定义仅在首次加载类时执行一次 * 3、首次加载类…

什么?我要对AI礼貌?人机交互面临的道德漏洞

作者 | 库珀来源 | 数据实战派头图 | 付费下载于 IC Photo如果你在一条道路上行驶&#xff0c;突然前面拐弯处出现一辆无人驾驶汽车&#xff0c;你会继续坚持你的道路优先权&#xff0c;还是让位使它先过去&#xff1f;目前&#xff0c;我们大多数人在涉及其他人的情况下能表现…

C#多线程共享数据

在多线程编程中,我们经常要使用数据共享.C#中是如何实现的呢?很简单,只要把你要共享的数据设置成静态的就可以了.关键字static .如下: static Queue q1new Queue(); static int b0; 在这里我定义了一个整形变量b和队列q1. 接下去就可以创建多线程代码了.如下: MyThread m…

异常-----Java compiler level does not match解决方法

假如你现在还在为自己的技术担忧&#xff0c;假如你现在想提升自己的工资&#xff0c;假如你想在职场上获得更多的话语权&#xff0c;假如你想顺利的度过35岁这个魔咒&#xff0c;假如你想体验BAT的工作环境&#xff0c;那么现在请我们一起开启提升技术之旅吧&#xff0c;详情请…

求几亿个数中不重复元素的个数

题目&#xff1a; 有2.5亿个无符号整数&#xff08;但在文件里面&#xff09;&#xff0c;要求找出这2.5亿个数字里面&#xff0c;不重复的数字的个数&#xff08;那些只出现一次的数字的数目&#xff09;&#xff1b;另外&#xff0c;可用的内存限定为600M&#xff1b;要求算法…

进一步提升用户信息安全保护意识 小米安全与隐私宣传月完满落幕

6月29日&#xff0c;第二届小米安全与隐私宣传月活动完美落幕。活动通过多形式、多层次、全方位展示了小米在信息安全与用户隐私保护方面的实践和成就&#xff0c;进一步提升小米全体员工保护消费者个人信息的安全意识&#xff0c;为小米全线产品的安全防护水平奠定基础。 闭幕…

已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。

已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法&#xff0c;找出a跟b中数据的大者。答案&#xff1a; int max(int a,int b){return (ababs(a-b))/2;}类似的 请定义一个宏&#xff0c;比较两个数a、b的大小&#xff0c;不能使用大于、小于、if语句 答案&#xff1…

flume源码学习8-hdfs sink的具体写入流程

上一篇说了HDFSEventSink的实现&#xff0c;这里根据hdfs sink的配置和调用分析来看下sink中整个hdfs数据写入的过程&#xff1a; 线上hdfs sink的几个重要设置 12345678hdfs.path hdfs://xxxxx/%{logtypename}/%Y%m%d/%H&#xff1a; hdfs.rollInterval 60 hdfs.rollSize 0…

详解zabbix中文版安装部署

一、zabbix简介&#xff08;摘自百度百科&#xff09;zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供柔软的通知机制以让系统管理员快速定位/解决存在…

赠书 | 图解机器学习算法,看这文就够了!

机器学习指的是计算机根据给定的问题、课题或环境进行学习&#xff0c;并利用学习结果解决问题或课题等的一整套机制&#xff08;图 1-1&#xff09;。 图 1-1 分类的示意图与机器学习共同成为热门话题的还有人工智能和深度学习。这里梳理一下它们之间的关系&#xff08;图 1-…

C#获得文件版本信息及只读文件的删除

获取文件的版本信息: FileVersionInfo myFileVersionInfo1 FileVersionInfo.GetVersionInfo("D://TEST.DLL"); textBox1.Text"版本号: " myFileVersionInfo1.FileVersion; 更改文件属性&#xff0c;删除只读文件&#xff1a; 下例欲将E:/test.txt文件…

组策略 从入门到精通(二) 如何区别跨越WAN网的计算机对组策略的套用

如果客户机与DC中间跨越了网络&#xff0c;造成传输速率慢的情况&#xff0c;我们希望通过策略中的一些元素&#xff0c;达成对这些计算机的另类处理。但我们并不知道这些计算机哪些与我们DC之间属于低速连接&#xff0c;哪些属于高速连接&#xff0c;那么我们要如何通过组策略…

插入记录时单引号的处理

由于Content, Title中可能包含单引号&#xff0c;直接使用sql的insert命令会报错&#xff0c;对此有两种处理方法&#xff0c;一种将单引号替换成两个单引号&#xff0c;第2种方法是使用存储过程。 表myBBS的格式定义如下&#xff1a; CREATE TABLE [dbo].[myBBS] ( [ID] [bi…

仅用 480 块 GPU 跑出万亿参数!全球首个“低碳版”巨模型 M6 来了

继今年 3 月阿里达摩院发布国内首个千亿参数多模态大模型 M6&#xff08;MultiModality-to-MultiModality MultitaskMega-transformer&#xff0c;以下简称 M6&#xff09; 之后&#xff0c;6 月 25 日&#xff0c;达摩院宣布对 M6 进行全新升级&#xff0c;带来“低碳版”巨模…

怎样将jpg转换成pdf软件

为什么80%的码农都做不了架构师&#xff1f;>>> 怎样将jpg转换成pdf软件 序言&#xff1a; 企业或个人通常会遇到设备终端软件的兼容性和支持性问题&#xff0c;比如&#xff0c;JPG转PDF文本&#xff0c;这给等于给用户设置了一个门槛&#xff0c;遇到需要将JPG转换…

二叉树的层次遍历 II

给出一棵二叉树&#xff0c;返回其节点值从底向上的层次序遍历&#xff08;按从叶节点所在层到根节点所在的层遍历&#xff0c;然后逐层从左往右遍历&#xff09; 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 3/ \9 20/ \15 7 按照从下往上的层次遍历为&#xff1a; [[15,7],[…

jquery autocomplete实现solr查询字段自动填充并执行查询

2019独角兽企业重金招聘Python工程师标准>>> 页面引入三个JS&#xff1a; <script type"text/javascript" src"js/jquery-1.7.2.js"></script> <script type"text/javascript" src"js/jquery-ui.js">&l…

C#使用CDO发送邮件

可以引用的COM组件列表&#xff0c;发现里面有一个名为Microsoft CDO For Exchange 2000 Library的COM组件&#xff0c;就是这个&#xff0c;我们可以用它来连接SMTP Server&#xff0c;使用用户名/密码验证发送邮件。 下面是实现的一个例子&#xff1a; Smtp Server使用的Smtp…