有关虚函数的注意事项浅谈

来源:互联网 发布:ssd优化 编辑:程序博客网 时间:2024/06/11 20:31

1.构造函数
构造函数不能是虚函数,这是不符合语法规则的,编译时出错。创建派生类的对象时,将调用派生类的构造函数,而不是基类的构造函数,然后再调用基类的构造函数,这种顺序不同于继承机制,另外派生类不继承基类的构造函数和析构函数。
2.析构函数
析构函数应该声明成虚函数

#include<iostream>class Base{    public:        Base()        {std::cout<<"This is Base ctr"<<std::endl;}        virtual ~Base()        {std::cout<<"This is Base dtr"<<std::endl;}};class inherit : public Base{    public:        inherit()        {std::cout<<"This is inherit ctr"<<std::endl;}        ~inherit()        {std::cout<<"This is inherit dtr"<<std::endl;}};int main(int argc, char const* argv[]){    Base* pb =  new inherit();    delete pb;    return 0;}

这样可以确保析构的顺序,即当释放基类指向的内存时,先调用子类的析构函数,再调用基类的析构函数(如图)
这里写图片描述

友好的编码人员,无论基类与否,析构函数都定义为虚析构函数,这是一个效率问题—————————-《C++ primer plus》

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 把车钥匙锁车里了怎么办 偷了东西不承认怎么办 孩子偷了东西不承认怎么办 公司员工偷了东西不承认怎么办 知道被谁偷了没有证据怎么办 被贼偷了知道是谁没有证据怎么办 前任要去部队闹怎么办 站久了腿粗怎么办 机械表表带长了怎么办 恶魔之眼褪色了怎么办 恶魔之眼掉色后怎么办 练瑜伽出汗瑜伽垫手滑怎么办 cf多出来的神器怎么办 脖子痛得低不了怎么办 六岁的孩孑不吃.饭怎么办 大腿肌肉练废了怎么办 吃鸡里的信誉分太低怎么办she 血压高老是晕怎么办27 我腰疼的厉害怎么办 奥克斯空调外机上霜风扇不转怎么办 燃脂膏辣辣的怎么办 减肥期间暴食了怎么办 健身减脂后腹部皮松怎么办 吃减肥药上火怎么办呢 魔域怀旧版新区进不去怎么办 dnf十周年礼盒打开了怎么办 房地产项目完成后企业员工怎么办啊 韩服lol延迟太高怎么办 LOL等级奖励卡掉怎么办 魔域手机号换了怎么办 买的qq号找回了怎么办 买dnf账号被找回怎么办 微博账号已锁定怎么办 抖音账号封手机怎么办 手机号码绑定被别人占用了怎么办 DNF账号给找回了怎么办 转转上被骗了200怎么办 7彩账号被锁定怎么办 猪不吃食没精神怎么办 cf手游签到没给怎么办 cf说停止运行了怎么办