C++复制构造函数和析构函数
来源:互联网 发布:查询iphone网络制式 编辑:程序博客网 时间:2024/04/30 01:08
首先,先来解释一下几个概念:复制构造函数、析构函数
复制构造函数:是一种特殊构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用。当定义一个新对象并且对他初始化的时,将显示使用复制构造函数。当将该类型的对象传递给函数或者从函数返回该类型的对象的时候,将隐式的使用复制构造函数。
析构函数:是构造函数的互补当,当对象超出作用域或者动态分配的对象被删除时,将自动应用析构函数。析构函数可用于释放对象时构造或在对象声明周期中所获取的资源。不管类是否定义了自己的析构函数,编译器都会自动执行类中非static成员的析构函数。
通常,编译器会自动的帮我们合成这些复制构造函数是非常精炼的----他们只做必须的工作。但是对某些类而言,依赖于默认定义会导致灾难。实现复制构造操作最困难的部分是最困难的部分,往往在于识别何时需要覆盖默认的版本。有一种特别常见的情况需要类定义自己的复制控制成员的:类具有指针成员。
何时调用析构函数:动态分配的对象只有在指向该对象的指针被删除的时候才会撤销。如果没有删除指针指向动态对象的指针,则不会运行该对象的析构函数,兑现过就会一直存在,从而导致内存泄露,而且,对象内部使用的任何资源也不会释放。
何时编写析构函数:许多类不需要编写析构函数,尤其是具有构造函数的类不一定需要定义自己的析构函数。仅有些工作需要析构函数完成时,才需要析构函数。析构函数通常用于释放在构造函数或者对象生命周期内获取的资源。如果类需要析构函数,则它也需要赋值操作符和复制构造函数,这是一个有用的经验法则。这个规则常称为三法则,指的是如果需要析构函数则需要所有的这三个复制控制成员。
析构函数不仅仅用来释放资源。一般而言,析构函数可以执行任意操作,该操作是设计者希望在该类对象的使用完毕后执行的。
- C/C++——构造函数、复制构造函数和析构函数的执行时刻
- C++: 复制构造函数
- 【C++】This指针和复制构造函数
- 构造函数和析构函数【c++】
- [c++]构造函数和析构函数
- 【C#】构造函数和析构函数
- 【C++】构造函数和析构函数
- 【C++】构造函数和析构函数
- C++:构造函数和析构函数
- C++复制构造函数和析构函数
- 复制构造函数和析构函数经典例子
- c++ 构造函数,析构函数,复制构造函数
- 何时调用构造函数,复制构造函数,析构函数
- 构造函数,析构函数,复制构造函数的理解
- C++构造函数,复制构造函数和析构函数专题
- 构造函数、复制构造函数和析构函数的作用
- 字符串类的实现:构造函数、析构函数、复制构造函数和赋值操作符
- 构造函数、复制构造函数和析构函数的总结
- java中dynamic web project与web project 的区别
- java不同类之间调用同一个常量
- 终于知道GitHub怎么删除一个项目的repositories了~~
- IT职业浅析
- 第二周项目3 两数做差
- C++复制构造函数和析构函数
- java核心之集合框架——HashMap源码分析
- [算法实现]基于分治的二维平面最近点对算法实现
- Combinations
- Mysql压力测试mysqlslap
- 第七周 1
- 归并排序
- 第八周项目七 制造错误
- python 7.5 _ver2, 添加tkenter图形界面,和密码验证