例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,但要返回具體的數值,就需要在...