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

重读STL源码剖析:析构

时间:2019-09-13 01:29:55      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:函数声明   优化   运行   派生类   编译器   动态   实现   str   虚基类   

纯虚析构函数

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

虚函数与内联

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

重读STL源码剖析:析构

标签:函数声明   优化   运行   派生类   编译器   动态   实现   str   虚基类   

原文地址:https://www.cnblogs.com/lxy-xf/p/11515570.html

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