C++构造函数&析构函数

构造和析构函数用于管理对象的初始化和清理工作,确保对象的正确生命周期管理。以下是其重要特性:

构造函数不能是虚函数
从存储空间角度:
虚函数是需要通过虚函数表和虚指针来调用的,如果用虚函数实现构造函数,而对象还没实例化,都没有虚函数表和虚指针,因此,构造函数不能是虚函数。

从使用角度:
虚函数的作用是通过父类的指针或引用,在调用父类时能够调用继承类对应的成员函数。而构造函数是自动调用,两者不符合,因此,构造函数不能是虚函数。

构造函数中可调用虚函数但不能发生多态
构造函数中可以调用虚函数,但是不可能发生多态行为,因为在构造函数执行时,虚函数表指针未被正确初始化。

析构函数可以且常常为虚函数
若析构函数为虚函数,delete时,基类和子类都会被释放。
若析构函数不是虚函数,delete时,只有基类被释放,子类没有被释放,存在内存泄漏的风险。

析构函数中可以调用虚函数但不能发生多态
析构函数中可以调用虚函数,但是不可能发生多态行为,因为在析构函数执行时,虚函数表指针已经被销毁。

转载请说明出处内容投诉
CSS教程_站长资源网 » C++构造函数&析构函数

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买