|
Posted on
2010-08-21 00:24
KurtWang
阅读( 396)
评论()
编辑
收藏
举报
- 复制控制:赋值操作符,复制构造函数,析构函数
- 复制构造函数:是一种特殊构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用。
- 析构函数:构造函数的互补,用来释放对象。不管是否显式定义了析构函数,编译器都会自动执行类中非static数据成员的析构函数。
- 赋值操作符:可以通过指定不同类型的右操作数而重载,右操作数为类类型的版本的比较特殊,如果我没定义,编译器会自动生成一个。
- 复制构造函数
- 用途:
- 根据另一个同类型对象显式或隐式初始化一个对象
- 复制一个对象,将它作为实参
- 从函数返回时复制一个对象
- 初始化顺序容器元素
- 根据元素初始化列表初始化数组元素
- C++两种初始化方式:直接初始化(将初始化式放在圆括号中),复制初始化(使用=)
string empty_copy = string(); //copy init
string empty_direct; //direct init
- 合成的复制构造函数:执行逐个成员初始化
- 定义复制构造函数:Foo(const Foo&);
- 禁止复制:显式声明其复制构造函数为private
- 大多数类应定义复制构造函数和默认构造函数
- 赋值操作符:
- Sale_item& operator=(const Sale_item &);
- 合成的赋值操作符:逐个成员赋值
- 赋值操作符和复制构造函数通常看做一个单元,需要一个,肯定也需要另外一个。
- 析构函数
- 当对象的引用或指针超出作用域,不会运行析构函数。只有删除动态分配的对象的指针或实际对象(不是对象引用)超出作用域时,才会运行析构函数。
- 三法则:需要赋值操作符和复制构造函数的,通常也需要析构函数。
- 合成析构函数:按对象创建的逆序撤销每个非static成员
|