C++回顾之构造函数与析造函数
作者:网络转载 发布时间:[ 2014/2/11 10:07:07 ] 推荐标签:C++ 构造函数 析造函数
析构函数概念
(1) 函数名与类名类似,前面多了一个"~"符号(取反符)
(2) 没有返回类型
(3) 不能有参数
(4) 不能被重载(这个好理解,因为没有参数,自然不能重载)
(5) 如果没有定义析构函数,则编译器会自动生成一个默认的析构函数,函数体是空的。
析构函数与对象数组
把握一个原则,构造几个对象,要调用几次析构函数。
拿上面的Test类来进行举例说明:
int main()
{
Test t[2] = {10,20}; //对象数组初始化,创建2个元素,即2个Test对象,分别传递初始值为10,20,是说调用的是带一个参数的构造函数。由于创建了2个对象,构造函数也调用了两次
Test *t2 = new Test(2); //仅创建一个对象,初始值为2,调用带一个参数的构造函数。
delete t2; //调用一次析构函数。
Test *t3 = new Test[2]; //在堆上创建2个对象,无初始值,调用的是不带参数的默认构造函数,由于是2个对象,故调用了2次。
delete [] t3; //调用两次析构函数,还有释放内存操作。
}
注意:析构函数可以被显式调用,但是当对象的生命周期结束后,系统还会再调用一次析构函数,这样造成了调用2次析构函数,如果在析构函数中含有delete操作,会出现问题。所以析构函数的显式调用比较少。STL源码中有用到析构函数的显式调用,这属于一些特殊用法。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11