c++ - 如何创建一个无法实例化的类?
问题描述
我不希望创建此类的对象,但在我的特殊情况下,我不知道如何防止这种情况。
我的想法是:
class abstract
{
private:
int foo;
public:
abstract();
virtual void useless_method_to_force_class_to_be_abstract() = 0;
virtual ~abstract();
};
但这真的不是我想的最佳实践......
是否有任何提示来构建概念,以使“我不知道应该将哪种方法设置为纯虚拟”的情况永远不会发生?
解决方案
没有必要引入不必要的virtual
成员函数。使析构函数成为纯虚拟的。确保使构造函数protected
允许构造派生类。同时,使析构函数也protected
.
class abstract
{
private:
int foo;
protected:
abstract();
virtual ~abstract() = 0;
};
请注意,实现纯虚函数是可以的。在析构函数的情况下,即使它们是纯虚拟的,也必须实现它们。
推荐阅读
- typescript - 如何在代码沙箱中使用 nuxt-property-decorator?
- css - 媒体查询、图像和加载时间
- flutter - Flutter 构建和 Xcode 归档混淆
- python - 图像不会显示
- imap - 是否有任何 XYMHIGHESTMODSEQ 文档?
- javascript - 为什么我不能在函数中返回计算出的距离(来自 Google Maps API)?
- sql - Redshift - 带条件的最大窗口函数
- string - 从 Clojure 字符串列表中删除多余的转义双引号
- amazon-s3 - 当我运行雪花阶段查询时,我收到 aws 错误
- reactjs - React Webpack 日志级别:webpack-dev-server