当前位置:首页 C++ > 正文

C++实现一个只能在堆(栈)上生成对象的类

作者:野牛程序员:2024-01-03 21:56:46 C++阅读 2800

可以通过将类的构造函数和析构函数声明为私有的,并提供一个静态的公有成员函数来创建对象。以下是一个简单的示例:

class HeapOnlyClass {
private:
    // 私有构造函数和析构函数
    HeapOnlyClass() {}
    ~HeapOnlyClass() {}

public:
    // 静态的公有成员函数,用于创建对象
    static HeapOnlyClass* createInstance() {
        return new HeapOnlyClass();
    }

    // 其他成员函数或数据成员...
};

在这个例子中,通过将构造函数和析构函数声明为私有的,外部代码无法直接创建或销毁类的对象。相反,提供了一个静态的公有成员函数createInstance(),用于在堆上创建对象,并返回指向对象的指针。

使用时可以这样创建对象:

HeapOnlyClass* obj = HeapOnlyClass::createInstance();

请注意,这并不是绝对安全的方式,因为在C++中仍然有其他一些方式可以绕过这种限制。但对于大多数情况下,这种方法已经足够了。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击