当前位置:  开发笔记 > 编程语言 > 正文

在什么情况下提供纯虚函数的实现是有利的?

如何解决《在什么情况下提供纯虚函数的实现是有利的?》经验,为你挑选了1个好方法。

在C++中,给出纯虚函数的实现是合法的:

class C
{
public:
  virtual int f() = 0;
};

int C::f() 
{
  return 0;
}

你为什么要这样做?

相关问题:C++ faq lite包含一个例子:

class Funct {
public:
  virtual int doit(int x) = 0;
  virtual ~Funct() = 0;
};

inline Funct::~Funct() { }  // defined even though it's pure virtual; it's faster this way; trust me

我不明白为什么析构函数被声明为纯虚拟然后实现; 我不明白为什么这应该更快的评论.



1> CB Bailey..:

必须始终实现声明的析构函数,因为实现将它们作为派生对象销毁的一部分进行调用.

如果它们提供有用的通用功能但总是需要专门化,则可以实现其他纯虚函数.在这种情况下,通常派生类实现将对基本实现进行显式调用:

void Derived::f()
{
    Base::f();

    // Other Derived specific functionality
}

通常,如果需要使类抽象(即防止创建非派生实例),则将析构函数设为虚拟,但该类没有其他自然纯虚拟的函数.我认为'相信我它更快'是指这样一个事实:因为析构函数被称为派生对象清理的一部分不需要使用vtable查找机制,所以可以利用内联实现,与典型的虚函数调用不同.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有