码迷,mamicode.com
首页 > 其他好文 > 详细

构造函数,析构函数是否为虚函数

时间:2014-05-10 01:18:38      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:a   table      存储   指针   空间   

1:构造函数不能为虚函数

    1):虚函数是用父类指针引用子类对象用的,(父类)构造函数在被调用的时候,子类对象还没被创建,不能用虚函数

    2):虚函数是通过vtable来调用的,vtable存在于对象的存储空间中,构造函数被调用的时候,对象还未生成,空间未分配,

           因此构造函数不能为虚函数

2:析构函数可以为虚函数,而且尽量设置为虚函数

    1):释放对象的时候,先调用子类的析构函数,再调用父类的析构函数。

           非虚函数是静态绑定的,当去释放一个指向子类对象的父类指针时,如果父类的析构函数是非虚函数,这时就只能调用

           父类的析构函数,子类的析构函数得不到调用。

     2):析构函数定义为纯虚函数时,需要为其定义函数体。

            (可以为纯虚函数定义函数体)

 

构造函数,析构函数是否为虚函数,布布扣,bubuko.com

构造函数,析构函数是否为虚函数

标签:a   table      存储   指针   空间   

原文地址:http://www.cnblogs.com/zgyseu/p/3708191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!