• 重读STL源码剖析:析构


    纯虚析构函数

    理论上来说,将一个函数声明为纯虚函数后,这个类即变为抽象类。纯虚函数只提供接口,而不提供实现,但纯虚析构函数一定要提供定义。这是由C++特性决定的,编译器对派生类的析构函数会进行扩展,以静态调用的方式调用其每一个虚基类和上基类的析构函数,尽管是一个抽象类,但仍然要为这个纯虚析构提供实现,即使是awov::~awov() {} 这样没有任何操作的实现,因为如果不提供,将导致链接失败

    虚函数与内联

    内联函数是一种静态行为,由编译器在调用地点展开,这是在编译期进行的;而虚函数是一种动态行为,是在运行期通过虚函数表跳转来实现的,因此inline与virtual是矛盾的,之所以声明为virtual的内联函数能成功运行,这是因为编译器做了优化。inline是对编译器的一种建议,而编译器是否采纳则不一定。j

  • 相关阅读:
    mongoDB
    邮箱认证
    Django中开启事务的两种方式
    总结
    __new__和__init__和__call__方法理解
    jupyter
    text()和html()区别
    django模型中auto_now和auto_now_add的区别
    ajax嵌套陷阱
    模板内置函数(HTML)
  • 原文地址:https://www.cnblogs.com/lxy-xf/p/11515570.html
Copyright © 2020-2023  润新知