没有合适的资源?快使用搜索试试~ 我知道了~
详细解释了为什么析构函数可以是虚函数,而构造函数不能是虚函数
资源推荐
资源详情
资源评论
















为何要虚析构函数?
如果析构函数不是虚的,则将只调用对应于指针类型的析构函数。这意味着即使指针
指向的是一个子类,也只有基类的析构函数被调用。如果析构函数是虚的,将调用相应对
象类型的析构函数。因此,如果指针指向的是子类对象,将调用子类的析构函数,然后自
动调用基类的析构函数。因此,使用虚析构函数可以确保正确的析构函数序列被调用。特
别是在使用 delete,malloc 等动态分配内存情况下。
而构造函数本身是要初始化对象,虚函数的作用在于通过父类的指针或者引用来调用它的
时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能
通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。而且虚函数对应
的虚函数表是存放在对象的内存空间里,如果构造函数是虚函数,就需要通过虚函数表来
调用,可是对象还没有实例化,也就是内存空间还没有,无法找到虚函数表,所以构造函
数不能是虚函数。
资源评论


shine_xin
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
