gpt4 book ai didi

C++ 接口(interface)返回一个引用——这是一种不好的做法吗?

转载 作者:行者123 更新时间:2023-11-30 05:39:37 24 4
gpt4 key购买 nike

我正在尝试实现多种缓存算法,其中一种可以在运行时替换另一种。

所以我开始描述一个接口(interface):

class ICache
{
public:
virtual ~ICache(){}
virtual const std::vector<SomeValue>& getSomeValues() const = 0;
virtual const std::vector<AnotherValue>& getAnotherValues() const = 0;
...
}

我的问题来了——在接口(interface)中返回一个引用是不是一种不好的做法?

这样的设计强制并暴露了类的内部实现,该类实现了它(因为它“必须”将所有 vector 存储为成员)。

有没有更好的办法?

最佳答案

我认为在此上下文中返回引用没有任何困难。接口(interface)只是调用者和服务之间的契约。我同意这个契约的性质似乎暗示在缓存端以这种方式在内部存储数据更好,但并不强制实现这样做;从实现的角度来看,它允许一种在正确使用时非常有效的机制(与强制创建新 vector 并按值传递它相反)。

关于C++ 接口(interface)返回一个引用——这是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32266096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com