Skip to content

Latest commit

 

History

History
67 lines (37 loc) · 2.28 KB

复制控制.md

File metadata and controls

67 lines (37 loc) · 2.28 KB

Table of Contents generated with DocToc

不管类是否定义了自己的析构函数,编译器都自动执行类中非static数据成员的析构函数。

复制构造函数、赋值操作符、析构函数总称为复制控制,编译器自动实现这些操作。

 

复制构造函数

复制初始化首先使用指定的构造函数创建一个临时对象,然后用复制构造函数将其复制到正在创建的对象。

为了防止复制,必须显式声明其构造函数为private。

P.S. 声明而不定义成员函数是合法的。

不允许复制的类对象只能作为引用传递给函数或从函数返回,也不能用作容器。因为这三种情况,都用到了复制构造函数。

 

赋值操作符

Sales_item& operator=(const Sales_item &)

复制和赋值常一起使用。

 

析构函数

变量在超出作用域时自动撤销,动态分配的对象只有在指向它的指针被删除时才撤销。当对象的引用或指针超出作用域时,不会析构。撤销一个容器,也会析构,逆序撤销。

如果需要析构函数,那么也需要三个复制控制成员。

 

管理指针成员

复制指针时只复制指针中的地址,不会复制指针指向的对象。

C++采用以下方法管理指针:

1、常规指针型行为

2、智能指针

3、值型行为,指针指向的对象都是唯一的,由每个类独立管理。

智能指针:定义智能指针的通用技术是采用一个使用计数(use count),智能指针类将一个计数器与类指向的对象相关联。

导航

目录

上一章:12. 类

下一章:14. 重载操作符与转换