你有一个A类,你把ctor设置为私有,所以客户端不能调用
A a;
在堆栈上创建obj。 但是有一天,另一位开发者会添加一个新的ctor:
A(int)
并尝试调用“A a(1);”在main()中。所以这将在堆栈上创建一个obj。你怎么防止这种情况?
这是我的解决方案,但我不知道它是否有意义。
对A类使用私有或受保护的析构函数,并提供工厂函数来分配对象和释放资源的函数(即调用析构函数)
谢谢
答案 0 :(得分:6)
将析构函数设为私有/受保护。在实例化上下文的堆栈上工作,该实例化上下文不是朋友或相应类的成员。
答案 1 :(得分:2)
一旦您向用户提供源代码,您就委托用户并允许他根据他的要求修改代码,但是您不希望他改变它,这就是冲突。