【发布时间】:2011-05-20 19:27:20
【问题描述】:
我想从一个函数返回一个类的实现。该函数位于库中。我想防止用户破坏我返回的对象。我怎样才能做到这一点?
编辑:示例。
与世界的接口:
class Base
{
public:
virtual void foo() = 0;
};
Base* GetFoo();
实施 - 内部:
class Bar : public Base
{
public:
void foo() { //Do something}
};
Base* GetFoo()
{
return new Bar
}
【问题讨论】:
-
有点超出原始问题的范围,但我不确定你为什么要使用单独的函数来获取接口基础(bar 的实例)。为什么不使用工厂方法。
-
如果用户尝试,只需对计算机进行编程以炸毁显示器。
-
我相信你希望 Bar() 的构造函数也是私有的?
-
不要返回指针(指针暗示他有删除的选项(虽然不是真的))。如果您返回引用,则用户没有理由删除它。