C++11--可以这么玩初始化列表吗?
来源:互联网 发布:mac下常用软件 编辑:程序博客网 时间:2024/06/11 23:47
我们知道C++11新增了初始化列表,在之前的博客中也有过介绍。
浅析C++中的初始化列表(区别赋值和初始化)
c++11特性之initializer_list
今天就讨论这么用初始化列表,不喜勿喷。
先写一个类:
class SimpleType{private: int a { 1 }; // << wow! int b { 1 }; // << wow2! string name { "string" }; // wow3!public: SimpleType() { cout << "SimpleType::ctor, {" << a << ", " << b << ", \"" << name << "\"}" << endl; } ~SimpleType() { cout << "SimpleType::destructor" << endl; }};
使用这个类:
SimpleType obj;
输出:
SimpleType::ctor, {1, 1, “string”}
来说说什么这么写有用:
1简洁
2你不会忘记初始成员变量
3当你有好几个构造函数的时候,这么写更有好处
对上面的类就行简单的修改:
class SimpleType{private: int a { 1 }; // << wow! int b { 1 }; // << wow2! string name { "string" }; // wow3!public: SimpleType() { /* old code... */ } SimpleType(int aa, int bb) : a(aa), b(bb) // << custom init! { std::cout << "SimpleType::ctor(aa, bb), {" << a << ", " << b << ", \"" << name << "\"}" << std::endl; } ~SimpleType() { cout << "SimpleType::destructor" << endl; }};
对修改后的类进行使用:
class AdvancedType{private: SimpleType simple;public: AdvancedType() { cout << "AdvancedType::ctor" << endl; } AdvancedType(int a) : simple(a, a) { cout << "AdvancedType::ctor(a)" << endl; } ~AdvancedType() { cout << "AdvancedType::destructor" << endl; }};
使用:
AdvancedType adv;
输出:
SimpleType::ctor, {1, 1, "string"}AdvancedType::ctor
使用:
AdvancedType advObj2(10);
输出:
SimpleType::ctor(aa, bb), {10, 10, "string"}AdvancedType::ctor(a)
副作用:
想要一个空的成员变量的时候,比如vector等等。
0 0
- C++11--可以这么玩初始化列表吗?
- C还可以这么玩第二期
- C还可以这么玩第一期
- Visual可以这么玩
- qml可以这么玩
- 客户端还可以这么玩?
- openZoosUrl还可以这么玩
- 原来EXECL可以这么玩
- mysql还可以这么玩
- 刚发现C语言中数组还可以这么初始化
- PHP排行榜也可以这么玩
- 浏览器还可以这么玩哈哈
- 原来宏定义可以这么玩
- 最大公因数还可以这么玩!!!!
- 原来java的List可以这么玩
- App引导界面,可以这么玩
- 数组原来还可以这么玩
- App引导界面,可以这么玩
- HDU1398(母函数)
- 【Leetcode】303 Range Sum Query - Immutable - 【动态规划】
- Android多线程之ThreadLocal
- nodejs 单例模式实现
- android显示音标
- C++11--可以这么玩初始化列表吗?
- 常用ADB命令
- 页内跳转
- HDU 5289 Assignment(线段树)
- Leetcode Add Binary
- VC编程实现文本语音转换
- Leetcode Flatten 2D Vector
- Android Studio官方文档之如何创建一个Android第三方库
- 【工具】ubantu下装sublime的文章