繁体   English   中英

默认的纯虚析构函数

[英]Default pure virtual destructor

在C ++ 11中,我们可以声明一个自动生成的析构函数:

struct X {
  virtual ~X() = default;
};

此外,我们可以声明析构函数是纯虚拟的:

struct X {
  virtual ~X() = 0;
};

是我的问题: 自动生成的如何声明析构函数纯虚? 看起来以下语法不正确:

struct X {
  virtual ~X() = 0 = default;
};

这两个都不是:

struct X {
  virtual ~X() = 0, default;
};

也不是这个:

struct X {
  virtual ~X() = 0 default;
};

编辑:对问题的目的进行一些澄清。 基本上我想要一个类是不可实例化的基类,但派生类是可实例化的,那么该类必须具有纯虚拟析构函数。 但另一方面,我不想在.cpp文件中提供定义。 所以我需要一些等同于default的机制。 我想知道是否有人有想法解决这个问题。

为了定义纯虚方法,您需要从声明中单独定义。

因此:

struct X {
    virtual ~X() = 0;
};

X::~X() = default;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM