我在一行中使用流操作符< <和位移操作符< <。 我有點困惑,爲什麼代碼A)不會產生與代碼B相同的輸出)?operator <<:std :: cout << i <<(i << 1);
A)
int i = 4;
std::cout << i << " " << (i << 1) << std::endl; //4 8
B)
myint m = 4;
std::cout << m << " " << (m << 1) << std::endl; //8 8
類敏:
class myint {
int i;
public:
myint(int ii) {
i = ii;
}
inline myint operator <<(int n){
i = i << n;
return *this;
}
inline operator int(){
return i;
}
};
在此先感謝
哎呀
幾乎重複的:http://stackoverflow.com/questions/2603312/the-result-of-int-c0- coutcc /。對於大多數實際用途來說,它們是相同的,儘管使用「++」而不是「<<」作爲修改操作符。 – 2010-04-21 21:19:35
@Jerry Coffin:它們非常相似,但有整個「vs < <混淆和事實上<<通常不會改變它的論點 – 2010-04-21 21:23:50