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

时间:2010-09-30 03:35:37

标签: c++

你有一个A类,你把ctor设置为私有,所以客户端不能调用

A a;

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

A(int)

并尝试调用“A a(1);”在main()中。所以这将在堆栈上创建一个obj。你怎么防止这种情况?

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

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

谢谢

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

一旦您向用户提供源代码,您就委托用户并允许他根据他的要求修改代码,但是您不希望他改变它,这就是冲突。