求助 c C 運算子過載 的引數問題

2023-04-25 13:50:10 字數 3578 閱讀 3173

1樓:完逸真珂

&表示引用傳遞,相信你已經知道。

const則表示傳進來的引數不能被修改,由於這裡是引用傳遞,引數修改後外面的值也會被修改,而這裡只是過載+運算,並不希望引數被修改,所以為了安全,一般會定義成const型別。

2樓:匿名使用者

例如現有類int,int&int::operator+(int x)例:int n(10);

n=n+2;//n=20

以上實際過載加法為乘法。

c++語言中什麼運算子不能過載

3樓:小丁創業

c++中絕大bai部分的運算子du允許過載zhi。

不能過載的運算子dao只有5個:

1)回。 (成員訪問運答算符)。

2).*成員指標訪問運算子)。

3)∷(域運算子)。

4)sizeof(長度運算子)。

5)?:條件運算子)。

4樓:匿名使用者

c++中絕大部分的運算子允許過載。

不能過載的運算子只有5個:

成員內訪問容。

運算子)* 成員指標訪問運算子)

域運算子)sizeof (長度運算子)

(條件運算子)

5樓:匿名使用者

過載抄操作符的限制:

1 並不是所有的。

襲操作符都能被過載。除了。 ,sizeof,typeid這幾個運算子不能被過載,其他運算子都能被過載。

2 過載不能改變該運算子用於內建型別時的函義,程式設計師不能改變運算子+用於兩個int型時的含義。

3 運算子函式的引數至少有一個必須是類的物件或者類的物件的引用。這種規定可以防止程式設計師運用運算子改變內建型別的函義。

4 過載不能改變運算子的優先順序。

5 過載不能改變運算子的結合律。

6 過載不能改變運算子運算元的個數。比如+需要兩個運算元,則過載的+也必須要有兩個運算元。

6樓:匿名使用者

幾乎全部可以。 不可以的只有4個。

作用域操作符。

點號, 即成員訪問操作符。

邏輯操作符。

這個一下還真想不起來叫什麼。

c++的所有運算子都可以過載嗎?

c語言,c++,哪些運算子不能過載?

c++的所有運算子都可以過載嗎?

7樓:胡說八道小鬼

大多數c++運算子可以過載。運算子過載是一種形式的c++多型。運算子過載將過載的概念擴充套件到運算子上,允許賦予c++運算子多種含義。

單目運算子過載:

單目運算子只有一個運算元,如!a,-b,&c,*p,還有最常用的++i和--i等。由於單目運算子只有一個運算元,因此運算子過載函式只有一個引數,如果運算子過載函式作為成員函式,則還可省略此引數。

下面以自增運算子」++為例,介紹單目運算子的過載。

例] 有一個time類,包含資料成員minute(分)和sec(秒),模擬秒錶,每次走一秒,滿60秒進一分鐘,此時秒又從0開始算。要求輸出分和秒的值。

可以看到:在程式中對運算子「++進行了過載,使它能用於time類物件。「+和「--運算子有兩種使用方式,前置自增運算子和後置自增運算子。

針對「++和「--這一特點,c++約定,在自增(自減)運算子過載函式中,增加一個int型形參,就是後置自增(自減)運算子函式。

雙目運算子過載:

雙目運算子(或稱二元運算子)是c++中最常用的運算子。雙目運算子有兩個運算元,通常在運算子的左右兩側,如3+5,a=b,i<10等。在過載雙目運算子時,不言而喻在函式中應該有兩個引數。

例] 定義一個字串類string,用來存放不定長的字串,過載運算子「==和「>」用於兩個字串的等於、小於和大於的比較運算。

有了這個基礎後,再增加其他必要的內容。現在增加對運算子過載的部分。為便於編寫和除錯,先過載一個運算子「>」程式如下:

程式執行結果為1。

這只是一個並不很完善的程式,但是,已經完成了實質性的工作了,運算子過載成功了。其他兩個運算子的過載如法炮製即可。

c++中的運算子過載主要用來做什麼?

8樓:匿名使用者

主要是用來使物件之間可以做運算操作的。

比如,你定義了一個類的物件a而這個物件中有一個資料,又定義了一個b物件也有一個資料,你須要使用a+b來計算這兩個物件中資料的合,就須要運算子過載。

運算子過載不光是可以過載四則運算的。也可以過載 下標運算子,《輸入輸出運算子等等。

運算子過載主要的用途只是為了讓運算子其前後跟後的物件可以直接像物件內的資料一樣運算。

9樓:匿名使用者

主要用來。

定義類的運算,比如你定義個複數類,然後就需要定義複數的加減乘除。

一個很簡單的例子,平面中質點速度就是個複數。

定義了速度的加減乘除,還可以定義其他運算,如點積,×積。

然後用這個類的時候,直接用過載的運算子運算,直觀,簡單。

顯然,你可以不用運算子過載,而是直接用函式實現複數的各種運算。

但是運算子直觀。

10樓:匿名使用者

自定義運算子,用來實現符合自己實際的需要。

11樓:匿名使用者

個人理解:就是為了實現不同物件裡面成員的運算。

c++中如何自定義過載運算子

c++裡什麼樣的函式不能過載

12樓:茶館

解構函式不能過載。

過載函式是函式的一種特殊情況,為方便使用,c++允許在同一範圍中宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同,也就是說用同一個函式完成不同的功能。這就是過載函式。過載函式常用來實現功能類似而所處理的資料型別不同的問題。

不能只有函式返回值型別不同。

過載函式(overloaded function)是c++支援的一種特殊函式,c++編譯器對函式過載的判斷更是c++語言中極為複雜的內容之一。首先我們先明確一下過載函式的定義:在相同的宣告域中的函式名相同的,而參數列不同的,即通過函式的參數列而唯一標識並且來區分函式的一種特殊的函式。

請解釋下c++的運算子過載功能,謝謝! 30

13樓:篤俠

運算子過載功能,主要是使有關運算子能夠運用到自定義的類型別,使得程式簡單明瞭,易讀易懂。

14樓:左手狙帝

自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與解構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供一個賦值運算子過載函式。

幾乎所有的運算子都可用作過載。具體包含:

算術運算子:+,位操作運算子:&,邏輯運算子:!,比較運算子:<,賦值運算子:=,其他運算子:,(逗號運算子),new,delete,new,delete,->

下列運算子不能過載:,.

c 運算子過載問題

1 注意 有字首和字尾之別,字首形式是變數先加1然後執行表示式,而字尾形式則是先執行表示式然後再使變數加1,所以在執行字尾的 運算子時應先反回物件的原始值,然後才對物件加1。2 預設的帶有一個引數的 運算子函式是字首 運算子,要過載字尾的 運算子必須採用另一種方式實現。過載字尾的 運算子時應給函式多...

這兩種運算子 過載有什麼區別還有為什麼引數是int不是物件

前 運算子組成抄的表示式是左值,襲後 運算子組成的表示式為右值,所以它們的過載函式是有所區別的 1.原型不同 前 運算子過載函式原型為 pixel operator 返回型別為引用,沒有int型形參 後 運算子過載函式原型為 pixel operator int 返回型別為物件,有int型形參 該形...

c delete運算子的問題

effective c 一書中如此描述 1.當你使用new時,有兩件事會發生。第一,記憶體被配置 透過函式operator new 第二,會有一個 或以上 的constructors針對此記憶體被呼叫。當你使用delete時,也有兩件事發生 一個 或以上 的destructors會針對此記憶體被呼叫...