c 中運算子過載,前 和後 如何區分

2021-08-26 05:04:38 字數 4273 閱讀 4552

1樓:匿名使用者

c++編輯器可以通過在運算子函式參數列中是否插入關鍵字int來區分這兩種方式

宣告:x operator++();//字首方式x operator++(int);//字尾方式呼叫時,引數int一般傳遞給值0

x ob;

++ob;

ob++;//隱式呼叫ob.operator++(int)ob.operator++();

ob.operator++(0);//顯式呼叫ob.operator++(int),意為ob++

2樓:匿名使用者

後置++有個型別為int的引數,一般不得在實現中使用該引數

3樓:匿名使用者

前++,變數先自加1在使用

後++,變數先使用後自加1

例如int a = 3,b=2;

a = (++a)+b;//a先自加1,a=4,後然a+b 最後結果給a,a = 6

a = a + (b++); //a=a+2 = 8,b自加1等於3,b =3

4樓:匿名使用者

字首式 operator++(),++後返回加之後的值

字尾式 operator++(int),++後返回加之前的值

5樓:志野唐津

舉個例子

1. int a = 1;

cout << ++a ;

先將a加1,然後輸出2

2. int a = 1;

cout << a++ ;

先輸出1,然後a加1變為2

6樓:瀟湘海英

前++先加1在計算,後加1先計算再加1

c++中為什麼過載前置++運算子要加個&?

7樓:

complex& complex::operator++() // 返回一

copy

個引用即bai代表當前du物件本身zhi

complex complex::operator++(int)

8樓:匿名使用者

1、因為過載bai自加運算子後可以du返回物件zhi的引用,dao以方便在表示式中連續使版用。

舉個例:權

cout《是經常用的,其實是過載了《這個操作符。如果不返回引用,cout<

就是這個意思吧。好多過載操作符,作用其實都是這樣的。

2、引用是c++引入的新語言特性,是c++常用的一個重要內容之一,正確、靈活地使用引用,可以使程式簡潔、高效。引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。 引用的宣告方法:

型別識別符號 &引用名=目標變數名。

9樓:匿名使用者

這裡返回bai物件的引用du, 可以連續使用。

舉個zhi例子 cout《是我們經常dao用的吧其實是過載了

《這個專操作符。

如果不返屬回引用

cout<

如果返回自身的引用 cout<

就是這個意思吧。好多過載操作符,作用其實都是這樣的。

還有 "="的過載

返回引用的目的 顯然就是 方便寫成 a = b = c;

為什麼可以這樣 其實是a = (b = c);

b=c返回的是b的引用,然後再繼續 a = b ;如果不反回自身的引用,顯然就不行了!

10樓:匿名使用者

& 代表引用,形參是引用(非const型)時,就是將該物件自己傳遞進函式了返回值是&時用在運算子的返回值是左值時,常用有這幾個:所有的賦值(包括複合賦值),字首自加自減,下標運算子

c++中運算子過載++前置和後置,實現中有什麼不同啊,它們各有什麼內函?

11樓:匿名使用者

單目操作符++過載確實存在前置和後置的差別。這個原理與普通型別的運算元基本相同。如果執行操作符前置的運算,那麼呼叫該操作符的物件將返回自增操作的結果;如果執行操作符後置的運算,那麼呼叫該操作符的物件將返回操作前的狀態,並執行了自增操作。

下面舉類物件的例子說明一下。

class objtype;

// ++前置

objtype objtype::operator++()// ++後置

objtype objtype::operator++(int noused)

12樓:夏致萱查琦

++後置表示先運算表示式再自加,例如:a=5,b=a++;運算之後,a=6,b=5

++前置表示先自加表示式再運算,例如:a=5,b=a++;運算之後,a=6,b=6

c++運算子過載是什麼意思

13樓:北大青鳥

所謂過載,就是重新賦予新的含義。函式過載就是對一個已有的函式賦予新的含義,使之實現新功能,因此,一個函式名就可以用來代表不同功能的函式,也就是」一名多用」。

運算子也可以過載。實際上,我們已經在不知不覺之中使用了運算子過載。例如,大 家都 已習慣於用加法運算子」+」對整數、單精度數和雙精度數進行加法運算,如5+8, 5.

8 +3.67等,其實計算機對整數、單精度數和雙精度數的加法操作過程是很不相同的, 但由於c++已經對運算子」+」進行了過載,所以就能適用於int, float, double型別的運算。

又如」<<「是c++的位運算中的位移運算子(左移),但在輸出操作中又是與流對 象cout 配合使用的流插入運算子,」>>「也是位移運算子(右移),但在輸入操作中又是與流物件 cin 配合使用的流提取運算子。這就是運算子過載(operator overloading)。c++系統對」<<「和」>>「進行了過載,使用者在不同的場合下使用它們時,作用是不同 的。

對」<<「和」>>「的過載處理是放在標頭檔案stream中的。因此,如果要在程式中用」<<「和」>>」作流插入運算子和流提取運算子,必須在本檔案模組中包含標頭檔案stream(當然還應當包括」using namespace std「)。

在c++中不能在程式中直接用運算子」+」對複數進行相加運算。使用者必須自己設法實現複數相加。例如使用者可以通過定義一個專門的函式來實現複數相加。

14樓:匿名使用者

比如+運算在正常情況下只能對基本型別(int 、float等)進行加法

過載之後就可以對複數a+bi進行加法(過載函式要針對複數去寫) 如:(a+bi)+(c+di)=(a+b)+(c+d)i

過載完之後+就可以完成上面功能

15樓:匿名使用者

先去了解什麼是函式過載吧。大概意思就是兩個同名的函式,利用形參的不同來作區分。

c++,前置++和後置++操作符過載時,為啥通過啞元就能進行區分呢?

16樓:留下痕跡的人生

比如:問題1:

/* 兩個函式重定義 不能通過編譯 */

complex& operator++(void)

complex const operator++()

/* 兩個函式形成過載關係,能通過

編譯 */

complex& operator++(void)

complex const operator++(int)

問題內2:

前++和後++ 最根本容的區別:

前++是先運算,後賦值

後++是先賦值,後運算

問題3:

/* 這三條語句是把運算後的值返回了,所以說前++的過載函式的實現 */

++m_r;

++m_i;

return *this;

/* 這三條語句,把運算之前的值old返回了,所有說是後++過載函式的實現 */

complex old = *this;

++m_r;

++m_i;

return old;

問題4:

為什麼前++返回的可以是物件引用值 ,後++返回的只能是物件?

因為前++,返回值是*this,表示該變數不是過載函式的區域性變數,所以可以放回其引用

後++,的返回值是old,old過載函式的的區域性變數,所以不能返回old引用。

17樓:匿名使用者

int main (void)

根據bai

入參不du一樣zhi,dao判斷的回。答

C運算子過載是什麼意思C中運算子過載到底有什麼何意義?

所謂過載,就是重新賦予新的含義。函式過載就是對一個已有的函式賦予新的含義,使之實現新功能,因此,一個函式名就可以用來代表不同功能的函式,也就是 一名多用 運算子也可以過載。實際上,我們已經在不知不覺之中使用了運算子過載。例如,大 家都 已習慣於用加法運算子 對整數 單精度數和雙精度數進行加法運算,如...

C指標運算子過載

比如這麼定義 template class linkedlist node operator int 前置,返回next節點 inline node getfirstnode 連結串列為空會出錯 private node pfirst 不過以上 有個很大的問題,實際上是不能用的,只是為了說明一下。因...

C中,如果使用運算子過載,比如過載,如問題補充裡

你過載的是用於 plex類的 copy 運算子,在 裡面的r b.r可以看作r.b.r 就是物件r所屬的類過載的 平時我們對於兩個整型的數的加法運算,比如兩個整型數int a和int b,a b就是呼叫了類似成員函式的經過過載的方法 也就相當於a.b 你要使用這個過載的運算子,譬如對於兩個 plex...