首页 > 代码库 > 构造函数,析构函数是否为虚函数
构造函数,析构函数是否为虚函数
1:构造函数不能为虚函数
1):虚函数是用父类指针引用子类对象用的,(父类)构造函数在被调用的时候,子类对象还没被创建,不能用虚函数
2):虚函数是通过vtable来调用的,vtable存在于对象的存储空间中,构造函数被调用的时候,对象还未生成,空间未分配,
因此构造函数不能为虚函数
2:析构函数可以为虚函数,而且尽量设置为虚函数
1):释放对象的时候,先调用子类的析构函数,再调用父类的析构函数。
非虚函数是静态绑定的,当去释放一个指向子类对象的父类指针时,如果父类的析构函数是非虚函数,这时就只能调用
父类的析构函数,子类的析构函数得不到调用。
2):析构函数定义为纯虚函数时,需要为其定义函数体。
(可以为纯虚函数定义函数体)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。