读书笔记:C++ primer 5th edition--chapter19.特殊工具与技术
2016-10-20 00:18
477 查看
以下是c++未被广泛应用的特征。
part1.控制内存分配
1.可以重载new与delete。一共有八个版本,可以重载任意一个,但是要求自定义版本必须位于全局作用域或者类作用域。
2.demo
void *operator new(size_t size){
if (void * mem = malloc(size)
return mem;
else
throw bad_alloc();
}
void operator delete( void *mem) noexcept { free(mem); }
part2.运行时类型识别RTTI
1.适用于我们想让基础类对象的指针或引用执行某个派生类操作并且该操作不是虚函数。因为某些场景无法定义虚函数。
2.在条件部分执行动态转换可以确保类型转换和结果检查在同一条表达式完成。
if( Derived *dp = dynamic_cast < Derived* >(bp) ) {}//
3.typeid运算符
1)作用于对象,而不是指针
2)对象有虚函数,则typeid的结果知道运行才确定。
4.RTTI用途:为具有继承关系的类实现相等运算符时有用。
part3.枚举类型
1.分类:
1)限定作用域的枚举类型,enum class open_mode {input, output, append};
2)不限定作用域的枚举类型, enum color {} or enum {} //未命名,不限定
2.如果不指定枚举值,默认为前者的值加1.成员是const,初始化枚举成员必须提供常量表达式。
3.指定enum大小
enum intValue :
unsigned long long {}..
part4.类成员指针
1.类的成员指针是可以指向类的非静态成员的指针。
2.初始化的时候不指定对象,只指向成员。
const string Screen::*pdata;//声明pdata为一个指向Screen类的const string成员的指针。
可以读取任意对象,但是,无法写入。
auto pdata = &Screen::contents;//contents是Screen的私有成员,pdata必须位于类内部或者友元内。
3.成员函数指针
//为了选择重载的版本
char (Screen::*pmf2) (Screen::pos, Screen::pos ) const;
pmf2 = &Screen::get;//限定get的版本,通过限定可以接受的形参以及返回值
char c2 = (myScreen.*pmf2) (0, 0);//调用优先级高,因此要加括号
part5.剩余
1.嵌套类,union,局部类
2.volatile与const可以兼容
3.合成的拷贝对volatile对象无效
4.extern
void (*pf1) (int); //指向c++函数
extern “C” void (*pf2) (int); //指向c函数
part1.控制内存分配
1.可以重载new与delete。一共有八个版本,可以重载任意一个,但是要求自定义版本必须位于全局作用域或者类作用域。
2.demo
void *operator new(size_t size){
if (void * mem = malloc(size)
return mem;
else
throw bad_alloc();
}
void operator delete( void *mem) noexcept { free(mem); }
part2.运行时类型识别RTTI
1.适用于我们想让基础类对象的指针或引用执行某个派生类操作并且该操作不是虚函数。因为某些场景无法定义虚函数。
2.在条件部分执行动态转换可以确保类型转换和结果检查在同一条表达式完成。
if( Derived *dp = dynamic_cast < Derived* >(bp) ) {}//
3.typeid运算符
1)作用于对象,而不是指针
2)对象有虚函数,则typeid的结果知道运行才确定。
4.RTTI用途:为具有继承关系的类实现相等运算符时有用。
part3.枚举类型
1.分类:
1)限定作用域的枚举类型,enum class open_mode {input, output, append};
2)不限定作用域的枚举类型, enum color {} or enum {} //未命名,不限定
2.如果不指定枚举值,默认为前者的值加1.成员是const,初始化枚举成员必须提供常量表达式。
3.指定enum大小
enum intValue :
unsigned long long {}..
part4.类成员指针
1.类的成员指针是可以指向类的非静态成员的指针。
2.初始化的时候不指定对象,只指向成员。
const string Screen::*pdata;//声明pdata为一个指向Screen类的const string成员的指针。
可以读取任意对象,但是,无法写入。
auto pdata = &Screen::contents;//contents是Screen的私有成员,pdata必须位于类内部或者友元内。
3.成员函数指针
//为了选择重载的版本
char (Screen::*pmf2) (Screen::pos, Screen::pos ) const;
pmf2 = &Screen::get;//限定get的版本,通过限定可以接受的形参以及返回值
char c2 = (myScreen.*pmf2) (0, 0);//调用优先级高,因此要加括号
part5.剩余
1.嵌套类,union,局部类
2.volatile与const可以兼容
3.合成的拷贝对volatile对象无效
4.extern
void (*pf1) (int); //指向c++函数
extern “C” void (*pf2) (int); //指向c函数
相关文章推荐
- 读书笔记:C++ primer 5th edition--chapter17.标准库特殊设施
- 读书笔记:C++ primer 5th edition--chapter18.用于大型程序的工具
- C++ Primer 5th 第19章 特殊工具与技术
- 读书笔记:C++ primer 5th edition--chapter 6.函数
- 读书笔记:C++ primer 5th edition--chapter13.拷贝控制
- 读书笔记:C++ primer 5th edition--chapter15.OOP
- 读书笔记:C++ primer 5th edition--chapter 3.字符串,向量,数组
- 读书笔记:C++ primer 5th edition--chapter8.IO Lib
- 35、C++ Primer 4th笔记,特殊工具与技术,优化内存分配(2)
- C++ Primer 学习笔记_98_特殊的工具和技术 --优化内存分配
- 读书笔记:C++ primer 5th edition--chapter12.动态内存
- 读书笔记:C++ primer 5th edition--chapter7.类
- [C/C++] 第18章:特殊工具与技术《 C++ Primer 》
- C++ Primer 学习笔记_105_特殊工具与技术 --联合:节省空间的类
- [C/C++] 第18章:特殊工具与技术《 C++ Primer 》
- 读书笔记:C++ primer 5th edition--chapter9.顺序容器
- C++ Primer 学习笔记_98_特殊工具与技术 --优化内存分配
- 【C++ Primer】特殊工具与技术
- C++ Primer 学习笔记_98_特殊工具与技术 --优化内存分配
- C++ Primer 学习笔记_100_特殊工具与技术 优化内存分配[续2]