如何创建无法实例化的类
How do I make a class that cannot be instantiated?
我不希望可以制作此类的对象,但在我的特殊情况下,我不知道如何防止这种情况。
我的想法是:
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;
};
请注意,实现纯虚拟函数是可以的。对于析构函数,即使它们是纯虚拟的,也必须实现它们。
相关文章:
- 如何创建一个空的全局类并在启动时实例化它
- 如何使用模板化类创建其他类的实例?
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- glfw 在创建之前/创建时实例化窗口位置
- 如何使用Qt在D-Bus上创建/实例化配对代理
- 在另一个对象 B 中创建对象 A 时,对象 A 是否是对象 B 的本地对象,对象 A 是否会存在于对象 B 的实例化之外?
- 创建实例化所有其他类和子系统的类的目的是什么
- 用户创建的类对象实例化的未申请标识符
- 如何在代码中创建抽象类,让蓝图扩展它,并将该蓝图返回给代码进行实例化?
- 如何为抽象基类创建模板实例化?
- 为什么当我在构造函数中创建线程时,实例化对象和对象的指针的行为不同
- 可以使用C 结构汇总初始化来创建临时实例
- 如何创建无法实例化的类
- C++-为任何lambda创建一个实例化桶
- 如何在派生实例化之前创建抽象类
- 当我创建一个int指针并实例化一个数组时,数组在内存中发生了什么
- C++ 是在每个实例化上创建的模板类中每个方法的新版本
- 如何推动在LUA脚本上使用的现有/创建/实例化类对象
- 我应该创建一个临时对象来实例化C++中的成员变量吗
- 如何基于b2Joint实例化提取/创建JointDef