C++11:初始化列表
在老版本的C++中,我们可以比较方便得对结构体、数组等对象利用{}进行初始化,而类变量的初始化则取决于构造函数的形式,例如:
struct A {
int a, b, c;
};
class Foo
{
public:
Foo(int n)
{}
};
int main()
{
int number[5] = { 1,2,3,4,5 };
std::vector<int> v = { 1,2,3,4 };
A a = { 0,0,0 };
Foo f(0);
return 0;
}
我们如果想对类对象也采用类似{}的方式进行方便的初始化,可以利用C++11所提供的新的类型:std::initializer_list,允许构造函数或其他函数像参数一样使用初始化列表,这位类对象的初始化和普通数组和结构体的初始化方法提供了统一的桥梁:
class Foo
{
public:
Foo(std::initializer_list<int> nums)
{
for (auto it = nums.begin(); it != nums.end(); it++)
{
}
}
};
int main()
{
//Foo f {1,2,3,4,5}; 这样写也是可以的
Foo f = {1,2,3,4,5};
return 0;
}
其实这个特性不只是可以用在对象构造上,还能将其作为普通函数的形参:
void foo(std::initializer_list<int> v)
{
}
int main()
{
foo({ 6,6,6 });
return 0;
}
这样写起来,是不是觉得方便了很多呢?
C++11:初始化列表的更多相关文章
- C++11初始化列表
[C++11之初始化列表] 在C++03中,在严格遵守POD的定义和限制条件的结构及类型上可以使用初始化列表(initializer list),构想是结构或是数组能够依据成员在该结构内定义的顺序通过 ...
- c++11 初始化列表 bind function 示例
// 111111111111.cpp: 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #incl ...
- c++11之初始化列表
一.前言 C++的学习中.我想每一个人都被变量定义和申明折磨过,比方我在大学笔试过的几家公司.都考察了const和变量,类型的不同排列组合,让你差别有啥不同.反正在学习C++过程中已经被折磨惯 ...
- C++11新特性——初始化列表 initializer_list
破事水: 由于最近数据结构有个实验报告说是要对字符串进行排序,想偷个懒不想一个一个地赋值,虽然可以用strcpy和传入二级指针的形式直接写,但是这样感觉不美观漂亮. 然后就去膜了一下C++11的新特性 ...
- C++11的初始化列表
初始化是一个非常重要的语言特性,最常见的就是对对象进行初始化.在传统 C++ 中,不同的对象有着不同的初始化方法,例如普通数组.POD (plain old data,没有构造.析构和虚函数的类或 ...
- C++11之列表初始化
1. 在C++98中,标准允许使用花括号{}来对数组元素进行统一的集合(列表)初始化操作,如:int buf[] = {0};int arr[] = {1,2,3,4,5,6,7,8}; 可是对于自定 ...
- C++-什么时候需要在类的构造函数中使用初始化列表
1,如果基类没有default构造函数,则意味着其不能自己初始化.如果其被派生,派生类的构造函数要负责调用基类的构造函数,并传递给它需要的参数.下例中Base 2,如果类成员没有默认构造函数.下例中E ...
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
一.构造函数初始化列表 推荐在构造函数初始化列表中进行初始化 构造函数的执行分为两个阶段 初始化段 普通计算段 (一).对象成员及其初始化 C++ Code 1 2 3 4 5 6 7 8 9 1 ...
- C++: 类成员初始化列表语法
类的成员初始化列表的初始化的基本语法,类的构造函数还可以运用此语法为其变量初始化: class Class { private: int a; int b; char ch; public: Cl ...
- C++11 初始化
C++11 初始化 统一初始化语法 C++11新添加初始化列表 std::initializer_list<>类型,可以通过{}语法来构造初始化列表 .初始化列表是常数:一旦 ...
随机推荐
- C CODE STYLE 每天瞅一两眼
阅读进度:只读到了swich 转载于:https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html C Coding Standard C Co ...
- mysql数据库连接客户端过多
flush hosts; 清理连接 查看当前连接数 show PROCESSLIST 与 show full PROCESSLIST (查看当前数据库所有连接,包含空闲连接与活跃连接) 查看最大连接数 ...
- CICD中一个巨头--jenkins
持续化集成,发布离不开CICD,CICD中有最重要的一个程序就是jenkins,本章主要讲jenkins部署和建立项目任务 jenkins的出现,大大的提高了代码上线问题,通过图中可以看出,开发人员通 ...
- C#使用SharpZipLib解压多文件的zip压缩文件数据流,保存到本地
代码: public async Task<ReturnModel<List<string>>> UploadModel() { var task = new Ta ...
- 2022-3-29内部群每日三题-清辉PMP
1.一名高管,也是上报升级的联系人,在生产启动期间加入一个敏捷团队.在下一个sprint之前,该高管向团队询问应包含的特性.该高管应已参加什么会议? A.回顾会议. B.每日scrum会议. C.Sp ...
- Python3注释
Python中的注释有单行注释和多行注释: python中单行注释以#开头,例如: #这是一个注释 print("hello,word!") 多行注释用三个单引号'''或者三个双引 ...
- vue 动态路由添加的问题
vue3中在router/index.js中 import { createRouter, createWebHistory } from 'vue-router'; import store fro ...
- Centos7.5下安装nginx
#cd /usr/local #wget http://nginx.org/download/nginx-1.8.0.tar.gz #tar -xzvf nginx-1.8.0.tar.gz #cd ...
- HCIP-进阶实验02-ISIS协议部署
进阶实验02-ISIS协议部署 1 实验需求 设备 接口 IP地址 备注 R1 G0/0/0 10.1.123.1/24 R2 G0/0/0 10.1.123.2/24 G0/0/1 10.1.24. ...
- net/http
客户端 GET POST form表单 json body二进制流 上传文件 PUT DELETE HEAD 重定向 Client Request Response Cookie CookieJar ...