深入理解C++11:C++11新特性解析与应用
来源:互联网 发布:淘宝运费险怎么退订 编辑:程序博客网 时间:2024/04/29 08:48
2.11模板函数的默认模板参数
1、C++98中仅模板类支持默认参数,模板函数不支持默认参数,但C++11中模板类和模板函数均支持默认参数
2、模板类的默认参数,对C++98和C++11中,需遵循“从右往左”的规则指定。
3、模板函数的默认参数,则没有该限制
3.1 继承构造函数
在子类中使用该语法声明继承父类的哪些方法,而不必再写一遍沟通函数
using 父类::函数名;
3.2 委派构造函数
为了区分被调用者和调用者,称为初始化列表中调用“基准版本”的构造函数为委派构造函数(delegating constructor),而被调用的“基准版本”则为目标构造函数(target constructor)。在C++11中,所谓委派构造,就是指委派函数将构造的任务委派给了目标构造函数来完成这样一种类构造的方式。
个人总结:
1、类中的构造函数可以继承其它构造函数,并做扩展。看上去类似调用父类的构造函数。
2、抽象出最为“通用”的行为做目标构造函数。
class Info {public: Info() { InitRest(); } Info(int i) : Info() { type = i; } Info(char e) : Info() { name = e; }private: void InitRest() { /* 其他初始化 */ } int type {1}; char name {'a'}; // ....};
3.6POD类型
C++11将POD划分为两个基本概念的合集,即:平凡的(trivial)和标准布局的(standard layout)
a、平凡的类或结构体符合以下定义:
1)拥有平凡的默认构造函数(trivial constructor)和析构函数(trivial destructor)
2)拥有平凡的拷贝构造函数(trivial copy constructor)和移动构造函数(trivial move constructor)
3)拥有平凡的靠背赋值运算符(trivial assignment operator)和移动赋值运算符(trivial move operator)
4)不能包含虚函数以及虚基类
//使用该辅助的类模板判断
template struct std::is_trivial;
b、标准布局
1)所有非静态成员有相同的访问权限(public,private,protected)
2)在类或者结构体继承时,满足以下两种情况之一
a、派生类中有非静态成员,且只有一个仅包含静态成员的基类。
b、基类有非静态成员,而派生类没有非静态成员。
3)类中第一个非静态成员的类型与其基类不同。
4)没有虚函数和虚基类。
5)所有非静态数据成员均符合标准布局类型,其基类也符合标准布局。这是一个递归的定义。
6.3 C++11中的memory_order枚举值
- 深入理解C++11:C++11新特性解析与应用
- 深入理解C++11:C++11新特性解析与应用
- C+11 新特性
- <C++11 新特性解析与应用> 读书笔记
- [C++]C++11新特性
- 【C++】 C++11新特性
- 【C++】了解C++11新特性
- C++:C++11新特性详解(1)
- 深入理解C与指针
- 【C/C++】C++11新特性:初探右值引用与转移语义
- [C#]C# 2.0新特性与C# 3.5新特性
- 【C/C++】C++11新特性:std::bind
- Objective-c——理解与特性
- 12c新特性
- Objective-C新特性
- Objective-C新特性
- Objective-C新特性
- Objective-C新特性
- log4j.properties 详解与配置步骤
- AngularJS 中的Promise --- $q服务详解
- iOS 签名相关
- Hibernate创建表
- ABAP结构工作区内表标题行的定义和区别
- 深入理解C++11:C++11新特性解析与应用
- android SVN 过滤
- R:S3类泛型函数
- 怎样判断是小端存储模式还是大端存储模式
- 洛谷 P1428 小鱼比可爱
- 蓝牙工作流程
- 分布式缓存 Memcached简介
- CentOS 7.x下的LEMP环境搭建
- css样式控制tr中文字超出后折行显示