1樓:黃邦勇帥哥哥
1. 注意++有字首和字尾之別,字首形式是變數先加1然後執行表示式,而字尾形式則是先執行表示式然後再使變數加1,所以在執行字尾的++運算子時應先反回物件的原始值,然後才對物件加1。
2. 預設的帶有一個引數的++運算子函式是字首++運算子,要過載字尾的++運算子必須採用另一種方式實現。
過載字尾的++運算子時應給函式多增加一個int引數,該int引數不會使用,應忽略他,該引數只是為了讓編譯器區分++運算子的字首和字尾形式之間的區別。比如過載字尾++運算子的友元函式形式為後面的引數int i沒有實際意義,應忽略他。
呵呵,因為c++規定要是int型,沒說要使用float型別,這是規定,沒有什麼規律。
2樓:匿名使用者
c++中對++運算子的過載,前置++過載為operator++();後置++過載為operator++(int);括號中的引數是用來區別是前置還是後置的。過載為成員函式是,有預設的this指標,過載為友元函式是則沒有,且引數要比過載為成員函式是多一個,所以要把數值傳遞進來(n)。
過載為成員函式:一元運算子,沒有引數;二元運算子,一個引數。
過載為友元函式:一元運算子,一個引數;二元運算子,二個引數。
要改都改,型別要一致。
求助 c C 運算子過載 的引數問題
表示引用傳遞,相信你已經知道。const則表示傳進來的引數不能被修改,由於這裡是引用傳遞,引數修改後外面的值也會被修改,而這裡只是過載 運算,並不希望引數被修改,所以為了安全,一般會定義成const型別。例如現有類int,int int operator int x 例 int n 10 n n 2...
C三目運算子問題關於c三目運算子的問題
三目運算就是下面這算式了 a a a z a 32 a它的意思是 a代表的字元在小寫字母 a 和 z 之間嗎?如果是,運算結果是a 32 如果不是,結果是a 這段程式應該是字母大小寫轉換,但有點問題。如果是想把小寫轉成大寫,後面應該是 a 32 如果是想把大寫轉成小寫,引號裡應該是大寫字母a和z 語...
C 中為什麼過載前置 運算子要加個
plex plex operator 返回一 copy 個引用即bai代表當前du物件本身zhi plex plex operator int 1 因為過載bai自加運算子後可以du返回物件zhi的引用,dao以方便在表示式中連續使版用。舉個例 權 cout 是經常用的,其實是過載了 這個操作符。如...