|
8.14 本章主要内容
本章主要内容如表8-6所示。
表 8-6
|
主 题
|
概 念
|
|
析构函数
|
对象是由析构函数销毁的。为了销毁包含在堆上分
配的成员的对象,本地C++(www.cppentry.com)类中必须定义析构函数,
因为默认的析构函数不能完成这项任务
|
|
默认复制构造函数
|
如果没有为本地C++(www.cppentry.com)类定义复制构造函数,则编译器将
自动提供一个默认的复制构造函数。默认复制构造函数不
能正确处理包含在空闲存储器上分配的数据成员的类对象
|
|
定义复制构造函数
|
当在本地C++(www.cppentry.com)类中自定义复制构造函数时,必须使用引用形参
|
|
运算符重载
|
为了提供类对象所特有的动作,可以重载大多数基本运
算符。实现自定义类的运算符函数时,应该与基本运算符的常规意义一致
|
|
类中的赋值运算符
|
如果没有为类定义赋值运算符,则编译器将提供默认的
版本。与复制构造函数一样,默认的赋值运算符不能正确
地处理包含在空闲存储器上分配的数据成员的类对象
|
|
在堆上分配内存的类
|
对于包含new操作符分配的成员的类来说,必须提供析
构函数、复制构造函数和赋值运算符
|
|
联合
|
联合机制允许两个或多个变量占用内存中相同的位置
|
|
string类
|
标准库中的string类提供了一种功能强大的处理程序中的字符串的方式
|
|
类模板
|
类模板用来创建结构相同的类,但支持不同的数据类型
|
|
类模板形参
|
可以定义拥有多个形参的类模板,形参甚至可以是常量值而非类型
|
|
移动语义
|
可以使用utility头文件声明的std::move()函数,将
lvalue或rvalue转换为rvalue,而无需复制。这样就可以在
合适时移动而不是复制对象,避免不必要的复制开销
|
|
完美转发
|
utility头文件声明的std::forward<T>()模板函数支持完美转发,
它允许把实参传递给另一个函数时,在带有rvalue引用实
参的模板函数中避免不必要的复制操作
|
|
组织代码
|
应该将程序的定义放入.h文件,将程序的可执行代码(即函
数定义)放入.cpp文件,然后使用#include指令将.h文件合并到.cpp文件中
|
|