[英]Is there a way to identify the const modifier of the variable in run-time?
[英]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
protected
或private
訪問,則只需m_var
。 如果不這樣做,那么您將擁有一個公共const getVar()
,該常量getVar()
您對其進行修改。
確實沒有其他方法可以做到這一點。 您不能像使用const
-qualification或ref-qualification那樣重載訪問權限,因為重載解析發生在訪問檢查之前。 那會禁止您執行protected
public
過載之類的事情,而protected
過載更適合。
您也不能在不引入實際引用的情況下為變量添加別名-但那時候您是在擴大類的大小,但是無論如何仍在使用不同的名稱來引用public
和protected
,此時使用public訪問器成員函數是嚴格更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.