美文网首页
GeekBand C++面向对象高级编程(下)(第四周):没有虚

GeekBand C++面向对象高级编程(下)(第四周):没有虚

作者: 七七的面包在流浪 | 来源:发表于2016-03-25 05:41 被阅读0次

    在C++中,如果一个类是作为父类存在时,那么析构函数必须是虚析构函数,否则在对其子类进行析构时,只会释放其父类的成分,对子类的成分置之不理

    原来一直以为在没有显示的定义析构函数的情况下,编译器会自动生成虚析构函数进行优化,但是通过今天的作业却发现不是这么一回事。
    众所周知,存在虚函数的类计算大小的时候必然要计算其虚表指针的大小,即使是一个虚基类,同样也会有大小,这就是因为虚表指针的存在。
    但是在今天的作业中,笔者尝试着将父类的虚函数注释掉,然后发现父类不再存在虚表指针了。
    这是一个值得警惕的情况,编译器虽然有时候会对代码进行优化,但还是得becare

    相关文章

      网友评论

          本文标题:GeekBand C++面向对象高级编程(下)(第四周):没有虚

          本文链接:https://www.haomeiwen.com/subject/gynrlttx.html