相关疑难解决方法(0)

默认的纯虚析构函数

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

struct X {
  virtual ~X() = default;
};
Run Code Online (Sandbox Code Playgroud)

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

struct X {
  virtual ~X() = 0;
};
Run Code Online (Sandbox Code Playgroud)

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

struct X {
  virtual ~X() = 0 = default;
};
Run Code Online (Sandbox Code Playgroud)

这两个都不是:

struct X {
  virtual ~X() = 0, default;
};
Run Code Online (Sandbox Code Playgroud)

也不是这个:

struct X {
  virtual ~X() = 0 default;
};
Run Code Online (Sandbox Code Playgroud)

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

c++ c++11

33
推荐指数
1
解决办法
6442
查看次数

在C++ 11中正确放置默认的纯虚析构函数

我有一个接口类,但我希望所有派生类都实现虚拟析构函数:

// Interface.h
class Interface {
    virtual ~Interface() = 0;
};

Interface::~Interface() = default;
Run Code Online (Sandbox Code Playgroud)

问题是在这种情况下,由于重复的符号,我有一个链接器错误.

我可以将定义放在.cpp文件中,但我想知道是否有更优雅的解决方案?

c++ virtual-destructor c++11

2
推荐指数
1
解决办法
212
查看次数

标签 统计

c++ ×2

c++11 ×2

virtual-destructor ×1