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

時間 2021-08-30 10:38:45

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 運算子過載時過載賦值運算子和下標運算子時型別中的 是什麼意思?為什麼要加?

過載運算 在需要過載的類中宣告 classname operator int i 就可以了。引數i是代表傳入的 括號中的值 索引 因為我們使用 的使用會用到類似 a i value的表示式去賦值,所以返回類的引用可以支援賦值操作。這裡有我修改的一段示例 上上西 給個示例,以樓上 為基礎,再包含標頭檔...

c 輸出運算子過載問題,C 運算子過載 為什麼流運算子不能過載為成員函式?

呵呵,ostream os就是cout 所以cout node endl 就是先 cout node 根據friend ostream operator ostream os node temp 知輸出node,然後生成新的流物件cout,就變成了cout endl,又是cout 和endl的過載,...

c 過載運算子用於輸出複數

阿君 宣告為友元類,friend ostream operator 實現部分 ostream operator 書道聖儒 過載輸出運算子 include class ccomplex ccomplex double rv ccomplex double rv,double iv friend cco...