本文介绍了是否可以防止对象的堆栈分配,并且只允许使用“new”实例化它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以防止对象的堆栈分配,并且只允许在堆上使用'new'?

Is it possible to prevent stack allocation of an object and only allow it to be instiated with 'new' on the heap?

推荐答案

你可以这样做的一种方法是使构造函数为私有的,并且只允许通过返回指针的静态方法构造。例如:

One way you could do this would be to make the constructors private and only allow construction through a static method that returns a pointer. For example:

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

这篇关于是否可以防止对象的堆栈分配,并且只允许使用“new”实例化它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 16:56