[英]cv-qualifiers and implicit type conversion
在代碼中,
const int x = 3;
int y = 0;
y += x;
在進行加法之前是否需要從 x 中刪除 const 或者這可能在加法運算符定義中隱式完成?
首先, +=
運算符是一個賦值運算符(復合賦值)。 它的行為雖然等同於y = y + x
組合(除了y
只評估一次)。
其次,當用作加法運算符的操作數時(包括您的示例中的+=
的 RHS) x
作為rvalue參與表達式,即它隱含地受到所謂的 lvalue-to-rvalue 轉換。 此轉換立即丟棄const
,因為非類類型(在您的情況下為int
)的右值不能是 cv 限定的。
隱式完成,因為您不會更改x
。
如果x
僅在給定代碼段中使用,則無需刪除const
。
const
修飾符將一個變量標記為保存只讀數據。 如果編譯器看到你在修改它,它會生氣並報錯。 對於所有其他用途, const
被刪除。
在您的情況下,您沒有修改x
所以不需要刪除const
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.