要让对象只能在堆区被创建,可以使用C++中的new运算符来动态分配内存。这样创建的对象只能在堆区存在,而不能在栈区或全局变量区存在。可以通过将构造函数声明为私有来防止在堆区之外创建对象,然后使用一个静态公共成员函数作为构造函数,该函数在堆区中动态分配内存并返回指针。下面是一个例子:

class MyClass {
private:
    MyClass() {} // 私有构造函数
public:
    static MyClass *createInstance() {
        return new MyClass(); // 动态分配内存并返回指针
    }
};

int main() {
    // MyClass obj; // 错误,无法在栈区创建对象
    // MyClass obj2 = MyClass(); // 错误,无法在全局变量区创建对象
    MyClass *ptr = MyClass::createInstance(); // 在堆区创建对象
    delete ptr; // 释放堆区内存
    return 0;
}

在上面的例子中,MyClass类的构造函数被声明为私有,因此无法在堆区之外创建对象。createInstance()函数是一个静态公共成员函数,它在堆区中动态分配内存并返回指针。在main()函数中,使用createInstance()函数在堆区中创建对象,并使用delete运算符释放内存。

human如何让对象只能在堆区被创建

原文地址: http://www.cveoy.top/t/topic/bUmw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录