繁体   English   中英

C ++接口返回参考-这是一种不好的做法吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM