1樓:黃邦勇帥哥哥
記住:過載的運算子是一個函式,他只是一個普通的函式,只是他的函式名稱比較特別,比如
a operator +(a m) 假設a是一個類,那麼這個過載的加操作符,其函式名稱就是operator +,函式的反回型別是a,引數是a m。
因此c++運算子過載反回的是什麼,要根據反回型別來決定的,不是都一味的反回returen *this就行的,但一般的操作符過載函式都是以const a& operator +(a & m)的形式開始的,基本上都要求反回對自身的引用,注意是對自身類的引用,不一定要*this,也可以是new a()之類的類a的物件,之所以要使用*那是因為this是一個指標,與反回型別a&是不相容的,因此要解引用。
2樓:匿名使用者
class a ;
a a, b, c;
a = b = c;
上面最後一行**相當於a.=(b.=(c))試想如果b不返回自己,a就無法被賦值,甚至連編譯都通不過。
3樓:
返回的是物件的引用而不是物件的指標。
c++ 賦值運算子過載返回的this有什麼作用?
4樓:匿名使用者
首先這裡返回是指(a=b)這個整體返回*this,也就是返回a的引用,這樣做是為了支援c=a=b這樣的連續赴值,等於c=(a=b),以和int,float這種內部型別的使用方法一致。
5樓:
過載運算子時,首先要考慮使過載後的運算子符合c++預設語法的語義。
就賦值號而言,c++中允許這樣的用法:
int a, b;
b = (a = 1);
注意其中的賦值表示式(a = 1)是返回變數a(此時其值為1)的。這個返回值就是賦值運算子的返回值。這樣一來變數b也可以被賦值為a。
因此,我們自己過載賦值運算子以後,也要返回被賦值的物件,即this。
6樓:匿名使用者
//如果不是引用,就要用this,試試看
class a
; a::operator=(const a rhs){ ...
*p=rhs.getdata();
return *this;
c++:運算子過載return *this;這樣返回的不就是物件本身麼?為什麼書上說返回的是物件的引
7樓:匿名使用者
要看這個函式的回返值了.應該是 object&func(){}這樣的吧?
this是自身的地址,但是*this就是自身了.是按值回返了.如果函式的回返值是帶有&號的,那麼回返值就是引用了
在c++的運算子過載中,this指標指的是什麼?
8樓:
this指標是類的一個自動生成、自動隱藏的私有成員,它存在於類的非靜態成員函式中
如 class aprint實為 print(a *this)
當你在類中直接使用某一個成員資料時 實為this->成員資料
9樓:匿名使用者
指向這個類的例項的指標,用來在成員函式中引用例項自己的指標
10樓:匿名使用者
this就代表當前的例項物件
11樓:
指標就是指向一個地址,此時它指向的是這個類物件的首地址
c++中過載運算子後,必須返回this指標
12樓:
返回的是物件自身,已經用 *解引用了。
返回後,++運算子就能串接到別的表示式當中去,這算是一種好的慣例。
你想返回什麼呢?相比返回物件自身,會得到什麼優點?
13樓:匿名使用者
不返回*this的話沒有語句表達當前物件。
c++運算子過載是什麼意思
14樓:北大青鳥
所謂過載,就是重新賦予新的含義。函式過載就是對一個已有的函式賦予新的含義,使之實現新功能,因此,一個函式名就可以用來代表不同功能的函式,也就是」一名多用」。
運算子也可以過載。實際上,我們已經在不知不覺之中使用了運算子過載。例如,大 家都 已習慣於用加法運算子」+」對整數、單精度數和雙精度數進行加法運算,如5+8, 5.
8 +3.67等,其實計算機對整數、單精度數和雙精度數的加法操作過程是很不相同的, 但由於c++已經對運算子」+」進行了過載,所以就能適用於int, float, double型別的運算。
又如」<<「是c++的位運算中的位移運算子(左移),但在輸出操作中又是與流對 象cout 配合使用的流插入運算子,」>>「也是位移運算子(右移),但在輸入操作中又是與流物件 cin 配合使用的流提取運算子。這就是運算子過載(operator overloading)。c++系統對」<<「和」>>「進行了過載,使用者在不同的場合下使用它們時,作用是不同 的。
對」<<「和」>>「的過載處理是放在標頭檔案stream中的。因此,如果要在程式中用」<<「和」>>」作流插入運算子和流提取運算子,必須在本檔案模組中包含標頭檔案stream(當然還應當包括」using namespace std「)。
在c++中不能在程式中直接用運算子」+」對複數進行相加運算。使用者必須自己設法實現複數相加。例如使用者可以通過定義一個專門的函式來實現複數相加。
15樓:匿名使用者
比如+運算在正常情況下只能對基本型別(int 、float等)進行加法
過載之後就可以對複數a+bi進行加法(過載函式要針對複數去寫) 如:(a+bi)+(c+di)=(a+b)+(c+d)i
過載完之後+就可以完成上面功能
16樓:匿名使用者
先去了解什麼是函式過載吧。大概意思就是兩個同名的函式,利用形參的不同來作區分。
c++的一個小問題! 關於返回 *this 是什麼。
17樓:
*this就是物件的地址啊,你的運算子過載函式const count& operator++()的返回型別是count&。就是說,返回count型的地址。
你以下這個函式:
const count operator++(int is)返回值就是這種物件,所以你能返回temp。注意,你呼叫的count temp(*this); 實際上是呼叫的建構函式count(int i),你把this的地址作為引數i傳入了。
18樓:珍惜所有所愛
在c++中this表示當前物件的地址,而*this才是當前物件
C指標運算子過載
比如這麼定義 template class linkedlist node operator int 前置,返回next節點 inline node getfirstnode 連結串列為空會出錯 private node pfirst 不過以上 有個很大的問題,實際上是不能用的,只是為了說明一下。因...
C運算子過載是什麼意思C中運算子過載到底有什麼何意義?
所謂過載,就是重新賦予新的含義。函式過載就是對一個已有的函式賦予新的含義,使之實現新功能,因此,一個函式名就可以用來代表不同功能的函式,也就是 一名多用 運算子也可以過載。實際上,我們已經在不知不覺之中使用了運算子過載。例如,大 家都 已習慣於用加法運算子 對整數 單精度數和雙精度數進行加法運算,如...
C中,如果使用運算子過載,比如過載,如問題補充裡
你過載的是用於 plex類的 copy 運算子,在 裡面的r b.r可以看作r.b.r 就是物件r所屬的類過載的 平時我們對於兩個整型的數的加法運算,比如兩個整型數int a和int b,a b就是呼叫了類似成員函式的經過過載的方法 也就相當於a.b 你要使用這個過載的運算子,譬如對於兩個 plex...