2013-04-04 25 views
-1

我對C++相當陌生,我一直在閱讀和編寫我自己的一些代碼。我偶爾會看到這些運營商,如果這甚至是正確的用詞?C++中「+ =」的含義和名稱是什麼?

+= // Not sure what it means 

所以我的問題是:他們是什麼意思/做什麼,他們叫什麼?

爲了進一步的參考,我想知道他們被稱爲什麼,所以我可以很容易地查找它(例如只搜索「+ =」,什麼都沒有產生)。

編輯:對於其他人誰不知道的意思(或在我的情況知道的這些名字),我發現這個維基百科的鏈接,可能出現的方便的其他人:http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B

+0

我相信他們被稱爲*複合賦值運算符*。應該有更好的運氣搜索使用該術語。 – 2013-04-04 15:58:55

+1

這個問題本來可以通過Google搜索輕鬆解決,顯示的研究工作非常少。 – depa 2013-04-04 16:14:24

+1

雖然你不是不正確的德帕,但我不知道他們的名字,所以我正在尋找各種錯誤的東西。 – dusz 2013-04-04 16:25:13

回答

13

是的,這些是運營商。更具體地說,它們被稱爲複合賦值運算符。這裏是他們的名單:

*= /= %= += -= >>= <<= &= ^= |= 

他們像這樣定義:

形式E1 op = E2的表達的行爲等同於除了E1E1 = E1 op E2只計算一次。

因此x += 5;幾乎與x = x + 5;相同。

你可以認爲它是一個修改的補充。如果您只是x + 5,則表達式的結果是您將x5一起添加時得到的結果,但x未更改。如果你這樣做x += 5;,x實際上已經增加了5個值。

+0

說例如 int i = 5; i + = 5; //現在我是10歲? – dusz 2013-04-04 16:01:53

+0

是的,正好dusz,! – 4pie0 2013-04-04 16:03:55

+0

是的,它的確如此。基本上它只是減少了源代碼的大小並增加了可讀性 – 2013-04-04 16:04:20

0

它只是一個縮寫: a+=2;意味着a=a+2; 當然,許多運營商:你可以重載它給它替代的意義,其實答案我們這樣做往往提供例如在的情況下這意味着這意味着什麼INT添加到我們的類SomeClass的:

SomeClass s; 
s+=1; //operator+=(SomeClass& s, int i){} is used here 

class A{ 
public: 
    A():i_(123){} 
    ~A(){} 
    int i(){return i_;} 
    A const& operator+=(int i){ 
     std::cout<<"operator+="; 
     this->i_=i_+i; 
    } 
private: 
    int i_; 
}; 


int main(int argc, char** argv) { 

    A a1; 
    a1+=3; 
    std::cout<<a1.i(); 
    return OK; 
} 

輸出:運營商+ = 126

+1

從技術上講,它是一個完全不同的操作員(對於非內置類型,不僅技術上而且實際上)。 – 2013-04-04 16:00:52

+0

當然這是不同的,但它擴展到這個,所以我解釋了這個運算符的含義 – 4pie0 2013-04-04 16:02:12

+0

它可以被重載,使得它的含義不等於你展現的擴展。當然是 – 2013-04-04 16:09:50

相關問題