簡體   English   中英

在public const修飾符中使用變量

[英]Using variable with public const modifier

我想在我的類中有一個變量,當從public作用域訪問時為const ,而從private或受保護范圍訪問時為非const 我想避免使用一種getter方法來返回對該變量的const引用。 我嘗試弄亂using關鍵字,但到目前為止沒有成功。 理想情況下,它看起來像這樣:

class Foo
{
public:
    using var = const m_var; // This is of course gibberish
private:
    int m_var;
}

我可以添加一個公共的const引用成員變量,並使其指向私有變量,但是那樣,我的類將增加4個字節,這是我想避免的。 編譯器會意識到這一點並優化參考嗎?

關於如何解決問題還有其他想法嗎?

我想避免使用getter方法來返回對變量的const引用

我不知道您為什么要避免這種情況。 這聽起來像是您想要的(也許只是返回按值):

class Foo
{
public:
    int getVar() const { return m_var; }
protected:
    int m_var;
};

如果您具有對Foo protectedprivate訪問,則只需m_var 如果不這樣做,那么您將擁有一個公共const getVar() ,該常量getVar()您對其進行修改。


確實沒有其他方法可以做到這一點。 您不能像使用const -qualification或ref-qualification那樣重載訪問權限,因為重載解析發生在訪問檢查之前。 那會禁止您執行protected public過載之類的事情,而protected過載更適合。

您也不能在不引入實際引用的情況下為變量添加別名-但那時候您是在擴大類的大小,但是無論如何仍在使用不同的名稱來引用publicprotected ,此時使用public訪問器成員函數是嚴格更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM