什么是构造函数和析构函数?构造函数、析构函数可以是虚函数嘛
3 分钟阅读
•
414 字
+
246 词
参考答案
- 构造函数
- 构造函数是创建对象时自动调用的成员函数,它的作用是初始化成员变量,为对象分配资源,执行必要的初始化操作。
-
特点
- 函数名必须与类名相同,且没有返回类型;
- 可以有多个构造函数;
- 如果没有为类定义一个构造函数,编译器会自动生成一个默认构造函数,它没有参数,也可能执行一些默认的初始化操作。
-
构造函数不能是虚函数。
- 虚函数对应一个虚表,需要通过虚函数指针去访问虚表,这个虚函数指针存在对象的内存空间,如果此时构造函数是虚函数,对象还没实例化没有分配内存空间,也就无法调用;
- 析构函数
- 析构函数是对象生命周期 结束时自动调用的函数,它的作用是释放对象占用的资源,执行一些必要的清理操作。
-
析构函数特点:
-
函数名为
~类名; - 没有参数;
- 如果没有为类定义一个析构函数,编译器会自动生成一个默认析构函数,执行简单的清理操作。
-
函数名为
-
析构函数可以是虚函数。
- 虚析构函数可以在运行时实现多态性;
- 如果基类的析构函数不是虚函数,当通过基类指针去删除派生类对象时,不会调用派生类的析构函数。可能会导致派生类的资源未被正确释放,从而造成资源泄漏