請教關於c 運算子過載的問題,謝謝

2021-03-11 05:49:01 字數 1749 閱讀 4402

1樓:by_吖澤

如果不用&實際上語法是沒錯的呢?而且執行也是可以的呢?

答案是yes,引用array & v表示回的含義是v和傳入的函答數實參共用一片記憶體區域,對v進行賦值等操作也會對傳入的實參造成修改,如果不用&的話那在過載函式中所使用的變數v就是實參的一個副本,也即另外開闢一片記憶體區域再複製一份與函式實參一模一樣的資料,這樣做是需要消耗系統資源的,顯然用&的話消耗系統資源更小,所以正如樓上所說「如果期望對原來的結構資料進行改寫或著節省大變數傳遞賦值的開銷,可以使用 」

另外,返回型別array &中也是一個意思,如果用了&那麼返回的就是*this的引用,如果不用&那麼返回的就是*this的一個副本

有什麼不明白的可以追問,滿意請採納

2樓:匿名使用者

&表示引用,如果期望對原來的結構資料進行改寫或著節省大變數傳遞賦值的開銷,可以使用

3樓:匿名使用者

用引用表示返回自身,對於<< 和>>運算子要求返回自身,還有就是連等版=,如果不加引用,權返回的是一個副本,這時就不能用cout << a << b這樣的形式了,返回地址就更不能用了,按語法來講返回引用、指標、型別都是可以的。

一個關於c++中操作符過載函式的疑問,幫忙指點一下,謝謝

4樓:匿名使用者

類的過載+ 是指相同的類「相加」,,,,,一個引數。

這是一個關於c++等號運算子過載的問題,誰能給我解釋一下該等號運算子過載函式的具體含義,要清楚明瞭喔

5樓:劃破天際の星

#include

#include

class string

//定義解構函式

~string()

//宣告過載運算子=

//定義類成員函式

void print()

private:

char *ptr;

};//定義過載運算子

所謂過載運算子就是根據你自己生成的類的需要來重新解釋運算子的功能

比如在integer中,運算子=的功能是把一個整數型別的右值賦值給同型別的左值;但是如果繼續用這個解釋,就無法在新的類中正常運作。因此需要重新定義。

在這個例項中,等號運算子的功能是以一個string型別變數的引用為引數返回一個string型別的指標。如果當前指標已經指向引數s,那麼直接返回當前指標;否則,建立一個新物件,並且通過strcpy函式將s的賦值給它,之後返回該物件的指標。

6樓:匿名使用者

7樓:匿名使用者

p1和p2都是你自己定來義的源string類,它包含一些操作即函式成員,因此不能直接把一個類物件賦給另外一個物件,必須通過運算過載,讓「=」只做自己定義的內容。和函式過載一樣,函式會根據具體情況呼叫不同形式的函式。主函式中「p2= p1;」這條語句,就會呼叫你自己寫的「=」函式,而不是普通意義上的「=」。

函式內部的實現方式,相信你會明白,應該沒問題吧。其實沒有什麼神祕的地方,如果你定義的是另一個函式如copystr(),你呼叫p2.copystr(p1);相信你就會很好地理解,這樣的機制一樣,只不過用運算子過載看上去更明瞭。

C運算子過載為什麼流運算子不能過載為成員函式

class object如果實現了成員operator 呼叫其物件格式o 載運算子為成員函式後,當呼叫該運算子時,左運算元必須是該類的例項。友元函式 流引數定義第一個引數.才能呼叫cout 雖然不能 過載 為成員函式,但是可以定義為新的成員函式,只不過使用習慣和常例不符而已。試想一下這一點 將我們的...

C中得運算子過載是什麼概念啊

一個自定義的類,一般是沒有諸如 或者其他的操作的,為了程式設計方便一點,就出現了運算子過載,就是為了定義這些操作符針對自定義類的操作。操作符即是函式 a b 等價於 operator a,b operator 就是 號的函式名字自定義的類不能直接使用a b這樣的形式,因為operator 不接受自定...

關於c運算子優先順序和的,C中運算子優先順序的問題

a和a 含義不同啊,a 表明先執行後加減,所以還是從0開始的。c 中運算子優先順序的問題 假定陣列是 int y 指標是 int symbol y int x 222 語句 symbol x 因為是字尾 表示式裡不自增,故計算分2步走,版1 1 symbol x 1 2 symbol symbol ...