在類成員函式名的前面加上有什麼用

2023-01-01 16:20:41 字數 2958 閱讀 3165

1樓:

引用,這樣操作的返回值就是那個return後面的變數地址資料的本身

2樓:匿名使用者

int &get();清晰起見,寫成:int& get();。int&是成員函式get()的返回值型別,即int的引用型別。

與直接返回int相比,返回引用不會傳遞返回值物件本身(而是傳遞返回值的地址——引用的底層一般使用地址實現),通過返回的引用在函式體外仍然可以對返回物件進行操作,但沒有直接返回物件的開銷。

對於複雜的類物件來說,使用引用傳遞引數優勢比較明顯。此外,返回引用在此基礎上可以實現一些特殊的效果,例如cout從屬的ostream類的《操作符過載函式可以隱含ostream&引數並返回一個物件自身的引用,藉此在《左端傳入《後的cout返回的自身引用可以作為(右邊)後繼表示式的引數,進行連續迭代操作。

應該注意,返回的引用不能是關於函式體內自動變數的,因為這些變數位於棧上,函式呼叫結束後就被銷燬,返回的引用會無效。

====

[原創回答團]

c++類的成員函式前加&什麼意思

3樓:匿名使用者

這個和函式引數加地址符的作用是一樣的,用於返值返回的是引用而不是賦值。

也就是說,該函式返值會通過地址傳送的方式給到函式呼叫者要求的返回值,這樣可以節省物件賦值造成的記憶體浪費,通常用於返值是大型物件(而不是簡單變數型別)的時候。

比如你有個class t,而這個函式的返值是return t; 加上地址符返值後,返回t變數的地址,將地址傳遞給接收返值的變數,而不是新建一個類t,呼叫類的複製函式建立一個新類。

4樓:it孤鶩

& 就是引用的意思

引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。

c++中函式名字前有&是什麼意思?

5樓:學雅思

&的意思是返回引用型別。

格式:型別識別符號 &函式名(形參列表及型別說明)。

在記憶體中不產生被返回值的副本;(注意:正是因為這點原因,所以返回一個區域性變數的引用是不可取的。因為隨著該區域性變數生存期的結束,相應的引用也會失效,產生runtime error。

擴充套件資料

使用返回引用型別注意事項:

1、不能返回區域性變數的引用。這條可以參照effective c++的item 31。主要原因是區域性變數會在函式返回後被銷燬,因此被返回的引用就成為了"無所指"的引用,程式會進入未知狀態。

2、不能返回函式內部new分配的記憶體的引用。這條可以參照effective c++的item。雖然不存在區域性變數的被動銷燬問題,可對於這種情況(返回函式內部new分配記憶體的引用),又面臨其它尷尬局面。

例如,被函式返回的引用只是作為一個臨時變數出現,而沒有被賦予一個實際的變數,那麼這個引用所指向的空間(由new分配)就無法釋放,造成memory leak。

3、可以返回類成員的引用,但最好是const。這條原則可以參照effective c++的item 30。主要原因是當物件的屬性是與某種業務規則(business rule)相關聯的時候,其賦值常常與某些其它屬性或者物件的狀態有關,因此有必要將賦值操作封裝在一個業務規則當中。

如果其它物件可以獲得該屬性的非常量引用(或指標),那麼對該屬性的單純賦值就會破壞業務規則的完整性。

6樓:匿名使用者

&的意思是,返回型別為complex 的一個引用。

不加&的時候表示,返回型別為complex 的一個拷貝。

就類似於函式引數傳遞時,按值傳遞和按引用傳遞的區別。

7樓:匿名使用者

返回一個complex 物件的引用。

既是返回的物件不會被複制 直接丟給你

8樓:匿名使用者

complex &, 這個不應該叫函式名前有&,這個應該叫型別後面加&, 表示引用型別。

9樓:

&的意思為,為a1取個別名,為operator

c++函式前面加"&"有什麼作用???

10樓:人生多問

如果這個函式的返回值不是void,那&的作用是指函式的返回值是引用型別,這個符號是與返回值配對的

////////////

這就是指返回值是引用

11樓:匿名使用者

"&"是用作「且」,表示並列。

"&":邏輯上表示兩者屬於缺一不可的關係,還可以表示一個人和另外一個人之意,與and同義。如a&b,表示a與b,a和b。

字元 & 的最早歷史可以追溯到公元1世紀,最早是拉丁語et (意為and)的連寫。最早的 & 很像 e 和 t 的組合,隨著印刷技術的發展,這個符號逐漸形成自己的樣式並脫離其原始影子。在這個字元中,仍能看出e的影子,但是t已經消失不見。

12樓:陳宗權

表示這個函式的返回型別是引用型別,或者說返回值的傳遞方式是引用傳遞。

13樓:匿名使用者

在函式呼叫中是傳引用呼叫的意思。意思就把實參變數換成行參變數、

類中有一個類名之後加函式是什麼意思

14樓:gta小雞

mydate add(int add_day) const;

宣告一個函式add,擁有一個int型形參add_day,返回值為mydate型別,且函式內不能修改任何本類的成員變數

這個函式可以直接寫成+號過載的形式mydate operator+(const int add_day) const;

c++函式名的前面有&或是*符號,是什麼意思?

15樓:永夜霧華

&,位與、取址、引用定義

* 與c的相同,指標定義、指定引用、乘積運算用到。

C 成員函式的使用有哪些限制,C 類成員函式什麼情況下必須定義引數?

必須為其指標所指向的物件分配記憶體才可以進行strcpy操作。如果沒有分配記憶體,則 strcpy pname,p 把p複製到 沒有記憶體存放!這可能會導致未知的情況發生,程式會崩潰.以下是修改後的程式。注 用構造分配記憶體 new 必須要用析構 delete 釋放記憶體,否則會造成記憶體洩露 me...

C包括類的宣告 成員函式的實現

include include class cscore void cscore input int id,char name,int math,int phi void cscore sum void cscore show void main c 成員函式的實現部分 寫在類外 究竟屬於類的內部還...

c中怎麼理解類內定義的成員函式就是行內函數

在類內定義的成員函式預設為inline,不論前面是否加了inline,當然,是否內聯還是取決於編譯器啦 而在類外定義的成員函式就不是行內函數。c 中怎麼理解類內定義的成員函式就是行內函數?當你的class。public成員函式宣告的時候,只要這個函式體當中不存在switch等迴圈語句的時候,則這個函...