c++ - C++ 中的无对象类

标签 c++ c++11

如何创建一个不允许创建其对象、没有任何纯虚函数、没有私有(private)构造函数的类。但是可以被派生类继承,成员函数可以在c++中重新定义吗?甚至可以创建这样的类吗?

最佳答案

一种方法是使构造函数 protected


另一种方法是使析构函数和operator new 受到保护。创建具有静态和自动存储持续时间的对象以及delete(但不是new)需要公共(public)析构函数。

例子:

struct X {
protected:
    ~X();
    static void* operator new(size_t);
    static void* operator new[](size_t);
};

int main() {
    X x;          // error: destructor is non-public.
    X* p = new X; // error: operator new is non-public.
}

关于c++ - C++ 中的无对象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56740296/

相关文章:

c++ - 命名空间 "std"没有成员 "clamp"

C++模拟按下等号(=)和问号(?)

c++ - 使用删除器初始化 std::unique_ptr

c++ - Constexpr 指针值

c++ - 通过引用传递数组到线程

c++ - 为什么 imread() 总是返回空数据?

c++ - C++类成员的条件布局

c++ - 使用可变参数模板打印列表

c++ - 组合两个不同大小的 vector 的值

c++11 - SFINAE 模板的 CUDA 10.1 编译错误