相关疑难解决方法(0)

为什么我们需要在C++中使用纯虚拟析构函数?

我理解虚拟析构函数的必要性.但为什么我们需要纯虚拟析构函数?在其中一篇C++文章中,作者提到我们在创建类抽象时使用纯虚析构函数.

但是我们可以通过将任何成员函数设置为纯虚拟来使类抽象化.

所以我的问题是

  1. 我们什么时候才能真正使析构函数变为虚拟?任何人都能给出一个很好的实时例子吗?

  2. 当我们创建抽象类时,将析构函数设置为纯虚拟是一种很好的做法吗?如果是..那为什么?

c++ destructor pure-virtual

151
推荐指数
6
解决办法
8万
查看次数

函数定义的纯粹说明符

在GCC上编译时,我得到错误:函数定义上的纯指定符,但是当我使用VS2005编译相同的代码时却没有.

class Dummy {   
  //error: pure-specifier on function-definition, VS2005 compiles 
  virtual void Process() = 0 {};
};
Run Code Online (Sandbox Code Playgroud)

但是当这个纯虚函数的定义不是内联时,它的工作原理是:

class Dummy
{
  virtual void Process() = 0;
};
void Dummy::Process()
{} //compiles on both GCC and VS2005
Run Code Online (Sandbox Code Playgroud)

错误意味着什么?为什么我不能内联?如第二个代码示例所示,避免编译问题是否合法?

c++ abstract-class pure-virtual

34
推荐指数
3
解决办法
1万
查看次数

标签 统计

c++ ×2

pure-virtual ×2

abstract-class ×1

destructor ×1