函式返回值總結 (返回指標和引用的區別)

2021-06-28 22:21:13 字數 1090 閱讀 4520

例1:

[cpp]view plain

copy

print?

class a  

int get()  

};  

a& func()  

int main()    

class a

int get()

};a& func()

int main()

};  

a func()  

int main()    

class a

};  

a func()  

int main()    

class a

};  

a func()  

int main()    

class a

};  

a func()  

int main()    

class a

};  

a& func()  

int main()    

class a

void set(int i)  

};  

a& func(a &a)  

int main()    

class a

{ int x;

public:

a(int i):x(i){cout<<"construct "construct     00701df8

2399

delete     00701df8

解釋:按引用傳參,p所指向的物件=r所引用的物件=返回值

返回值其實沒有用,沒有返回值,結果也是一樣的

8.當函式按值返回在該函式中建立的棧中物件時,會把該物件複製到執行呼叫該函式的作用域中。

複製物件的工作結束後,接著會呼叫析構函式銷毀複製的物件。

如果用指標接收,函式返回後,物件和它的複本都被析構,副本的記憶體位址返回給指標,在該位址的資料沒有被覆蓋前,指標仍可訪問該資料

當按位址返回乙個堆中物件,並用引用接收時,需要乙個指標來儲存引用的位址,這個指標用於刪除物件

指標和引用作為函式返回值

例子一 引用作為函式返回值 includeusing namespace std int f2 int a,int i int main int n f2 a,3 f2 a,3 14 相當於a 3 cout 例子二 指標作為函式返回值 includeusing namespace std 返回乙個指...

指標和引用作為返回值

一 函式返回值 1.如果返回值小於4byte 用暫存器eax帶回返回值 2.如果返回值大於4byte小於8btye,用兩個暫存器eax edx帶回返回值 3.如果返回值大於8byte,在呼叫前main函式中產生臨時量接受返回值 二 臨時量生成的三種情況 1.函式呼叫之前產生,目的是為了接受函式的返回...

有返回值和無返回值函式

前面在定義函式時,有些函式使用了return語句,有些函式沒有使用return語句,使用return語句與不使用return語句有什麼區別呢?由前面的章節我們知道,若定義函式時沒有使用return語句,則預設返回乙個none。要返回乙個none,可以只寫乙個return,但要返回具體的數值,就需要在...