簡體   English   中英

cv 限定符和隱式類型轉換

[英]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.

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