c++ - 是否可以防止对象的堆栈分配并只允许使用 'new' 对其进行实例化?

是否可以阻止对象的堆栈分配,只允许在堆上使用“new”启动它?

最佳答案

您可以这样做的一种方法是将构造函数设为私有(private),并且只允许通过返回指针的静态方法进行构造。例如:

class Foo
{
public:
    ~Foo();
    static Foo* createFoo()
    {
        return new Foo();
    }
private:
    Foo();
    Foo(const Foo&);
    Foo& operator=(const Foo&);
};

关于c++ - 是否可以防止对象的堆栈分配并只允许使用 'new' 对其进行实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124880/

相关文章:

c++ - 在没有实例的情况下获取 std::array 的大小

c++ - 三向比较运算符与减法有何不同?

c++ - 如何以编程方式确定表达式在 C++ 中是右值还是左值?

c++ - 字符串文字中的符号\0 是什么意思?

c++ - 为什么要使用断言?

c++ - 从构造函数的初始化列表中捕获异常

c++ - 不允许指向不完整类类型的指针

c++ - 多行 DEFINE 指令?

c++ - C++ 中的常量和编译器优化

c++ - 私有(private)构造函数