1. 程式人生 > >c++ 返回物件的說明

c++ 返回物件的說明

1. 返回指向const物件的引用

返回物件將呼叫賦值建構函式,返回引用不會。

如果函式的返回值是指向const物件的引用,函式型別應該設定為const。

2. 返回指向非const物件的引用

過載賦值運算子“=”,避免使用複製建構函式

過載與cout連用的運算子“<<”,cout<<s1<<"is coming";operator<<(cout,s1),返回型別只能是ostream&,如果返回的是ostream,則需要呼叫ostream的複製建構函式,而ostream沒有公有的複製建構函式。

3. 返回物件

如果被返回的物件是被呼叫函式中的區域性變數,則不能返回它的引用,因為函式在使用完之後,函式中區域性變數的開銷就會被釋放掉,源目標已經被釋放,引用也就無從談起。

4. 返回const物件

如果一個函式返回的物件不想被修改時,應該返回const物件

總之,如果函式要返回區域性物件,則應該返回一個物件,而不是物件的引用;如果函式需要返回一個沒有公有建構函式的物件時,需要返回該物件的引用;最後,有些函式既可以返回物件,又可以返回引用時,優先考慮引用,因為這樣效率更高。

 

如果資料成員是非靜態const成員或引用,則必須採用初始化列表進行初始化。

如果使用定位new運算子為類物件分配記憶體,則必須顯式地為該物件呼叫解構函式。方法是使用指向該物件的指標呼叫解構函式。c++允許類中包含結構、類和列舉型別的定義,這些巢狀型別的作用域為整個類,這意味著它們被侷限於類中,不會與其他地方定義的同名結構、類和列舉衝突。

 

成員初始化列表語法直接使用複製建構函式完成引數的賦值,但是普通的函式首先需要呼叫預設建構函式,然後使用複製建構函式初始化引數。

基類指標可以在不進行顯示型別轉換的情況下指向派生類物件:基類引用可以在不進行顯示型別轉換的情況下引用派生類物件。基於此,函式引數為基類引用,呼叫函式時,實參可以為基類物件,也可以是派生類物件。

基類物件可以初始化為派生類物件,也可以將派生類物件賦值給基類物件。