C++ - 如何防止对象在堆栈上分配?

q09*_*987 0 c++

你有一个A类,你把ctor设置为私有,所以客户不能打电话

A a;
Run Code Online (Sandbox Code Playgroud)

在堆栈上创建obj.但是有一天,另一位开发者增加了一个新的ctor:

A(int)
Run Code Online (Sandbox Code Playgroud)

并试着称之为"A a(1);" 在main()中.所以这将在堆栈上创建一个obj.你怎么防止这种情况?

这是我的解决方案,但我不知道它是否有意义.

对类A使用私有或受保护的析构函数,并提供工厂函数来分配对象和释放资源的函数(即调用析构函数)

谢谢

Chu*_*dad 6

使析构函数私有/受保护.在实例化上下文的堆栈上工作,该实例化上下文不是朋友或相应类的成员.