[英]C++ interface returns a reference - is it a bad practice?
我正在尝试实现几种缓存算法,其中一种可以在运行时替换另一种。
因此,我从描述一个接口开始:
class ICache
{
public:
virtual ~ICache(){}
virtual const std::vector<SomeValue>& getSomeValues() const = 0;
virtual const std::vector<AnotherValue>& getAnotherValues() const = 0;
...
}
这是我的问题-在接口中返回引用是一种不好的做法吗?
这种设计强制并公开了类的内部实现,该类实现了它(因为它“必须”将所有向量存储为成员)。
有没有更好的办法?
在这种情况下,返回引用没有任何困难。 该接口只是调用者与服务之间的合同。 我同意该合同的性质似乎意味着在缓存方面,以这种方式在内部存储数据会更好,但并不强制实现这一点。 从实现的角度来看,它允许一种在正确使用时非常有效的机制(与强制创建新向量并将其按值传递相反)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.