1樓:匿名使用者
這個和函式引數加地址符的作用是一樣的,用於返值返回的是引用而不是賦值。
也就是說,該函式返值會通過地址傳送的方式給到函式呼叫者要求的返回值,這樣可以節省物件賦值造成的記憶體浪費,通常用於返值是大型物件(而不是簡單變數型別)的時候。
比如你有個class t,而這個函式的返值是return t; 加上地址符返值後,返回t變數的地址,將地址傳遞給接收返值的變數,而不是新建一個類t,呼叫類的複製函式建立一個新類。
2樓:it孤鶩
& 就是引用的意思
引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。
c++中類後加一個函式是什麼意思
3樓:匿名使用者
x f5()是定義一個返回型別為x的函式
如果你感覺不好理解的話把x換成int去考慮
就是f5這個函式返回了一個x類型別的變數
c++中函式名字前有&是什麼意思?
4樓:學雅思
&的意思是返回引用型別。
格式:型別識別符號 &函式名(形參列表及型別說明)。
在記憶體中不產生被返回值的副本;(注意:正是因為這點原因,所以返回一個區域性變數的引用是不可取的。因為隨著該區域性變數生存期的結束,相應的引用也會失效,產生runtime error。
擴充套件資料
使用返回引用型別注意事項:
1、不能返回區域性變數的引用。這條可以參照effective c++的item 31。主要原因是區域性變數會在函式返回後被銷燬,因此被返回的引用就成為了"無所指"的引用,程式會進入未知狀態。
2、不能返回函式內部new分配的記憶體的引用。這條可以參照effective c++的item。雖然不存在區域性變數的被動銷燬問題,可對於這種情況(返回函式內部new分配記憶體的引用),又面臨其它尷尬局面。
例如,被函式返回的引用只是作為一個臨時變數出現,而沒有被賦予一個實際的變數,那麼這個引用所指向的空間(由new分配)就無法釋放,造成memory leak。
3、可以返回類成員的引用,但最好是const。這條原則可以參照effective c++的item 30。主要原因是當物件的屬性是與某種業務規則(business rule)相關聯的時候,其賦值常常與某些其它屬性或者物件的狀態有關,因此有必要將賦值操作封裝在一個業務規則當中。
如果其它物件可以獲得該屬性的非常量引用(或指標),那麼對該屬性的單純賦值就會破壞業務規則的完整性。
5樓:匿名使用者
&的意思是,返回型別為***plex 的一個引用。
不加&的時候表示,返回型別為***plex 的一個拷貝。
就類似於函式引數傳遞時,按值傳遞和按引用傳遞的區別。
6樓:匿名使用者
返回一個***plex 物件的引用。
既是返回的物件不會被複制 直接丟給你
7樓:匿名使用者
***plex &, 這個不應該叫函式名前有&,這個應該叫型別後面加&, 表示引用型別。
8樓:
&的意思為,為a1取個別名,為operator
c++中函式前加~是什麼意思,比如~thread();
9樓:人設不能崩無限
c++中函式前加~是表示此函式是解構函式。
解構函式(destructor) 與建構函式相反,當物件結束其生命週期,如物件所在的函式已呼叫完畢時,系統自動執行解構函式。解構函式往往用來做「清理善後」 的工作(例如在建立物件時用new開闢了一片記憶體空間,delete會自動呼叫解構函式後釋放記憶體)。
10樓:匿名使用者
c++中函式
前加~是表示此函式是解構函式。
解構函式介紹
1.解構函式(destructor) 與建構函式相反,當物件脫離其作用域時(例如物件所在的函式已呼叫完畢),系統自動執行解構函式。解構函式往往用來做「清理善後」 的工作(例如在建立物件時用new開闢了一片記憶體空間,應在退出前在解構函式中用delete釋放)。
2.以c++語言為例:解構函式名也應與類名相同,只是在函式名前面加一個位取反符~,例如~stud( ),以區別於建構函式。
它不能帶任何引數,也沒有返回值(包括void型別)。只能有一個解構函式,不能過載。如果使用者沒有編寫解構函式,編譯系統會自動生成一個預設的解構函式(即使自定義了解構函式,編譯器也總是會為我們合成一個解構函式,並且如果自定義了解構函式,編譯器在執行時會先呼叫自定義的解構函式再呼叫合成的解構函式),它也不進行任何操作。
所以許多簡單的類中沒有用顯示的解構函式。
例項:#include
using namespace std;
class t };
int main();
11樓:匿名使用者
解構函式,用來釋放你程式執行中沒有delete或者free的變數,完成掃尾工作,一般的建立類如果不寫解構函式會呼叫系統預設的解構函式,如果使用者有宣告和定義,則呼叫使用者的
c++中,在定義類時,在類中的成員函式的表示方式是,類名::成員函式,這是什麼意思
12樓:向丶思陽
::這個叫做作用域限定符,類名::函式名,是說明這個函式是這個類的成員函式,而不是其他類的。因為很多時候不同類都有同名的成員函式。
c執行緒如何執行帶引數的類成員函式
1 在a類中新增一個執行緒方法do fun class a string s 新增一個屬性,可以傳入引數 public string para set 新加執行緒方法 public void do fun 2 傳入引數並呼叫執行緒 a a new a a.para 傳入的字串 thread t ne...
請問C 中成員函式在類裡面定義和在類外定義有什麼區別
效能來說沒啥區別。不過放在類外,的定義和實現分開,有利於 封轉,別人需要呼叫你的介面的時候,你可以只給他標頭檔案,的實現自己留著。在類裡定義時,這種函式會被編譯器編譯成行內函數,在類外定義的函式則不會。行內函數的好處是加快程式的執行速度,缺點是會增加程式的尺寸。比較推薦的寫法是把一個經常要用的而且實...
c基類中的成員函式的引數是派生類怎麼辦
先宣告派生類,將成員函式引數設為派生類的引用 include using namespace std class b class a int main 不知道你是不是要問這個 那還放在基類搞什麼,不如弄成虛擬函式。c 中派生類如何使用基類中的資料成員 如果你是派生類例項,這個結果是正確的,派生後會覆...