簡體   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