c運算子過載return this是什麼意思

2022-12-24 06:06:03 字數 3330 閱讀 9081

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...