函式形參詩引用,程式輸出如程式最後的注釋,表明引用s代表的是物件s2.
//函式中的引用
#includeusing
namespace
std;
class
sample
sample(sample &a): x(a.x)
int getx()
};//
形參為引用
void disp(sample &s)
//void disp(sample s)
intmain()
/*output
call constructor sample(int a)
call constructor sample(sample &a)
22*/
函式形參不是引用程式輸出如注釋,結果顯示呼叫了兩次類sample的複製建構函式,第一次是建立s2物件時呼叫,第二次是傳遞引數時呼叫,即將s1物件拷貝給形參s時呼叫了複製建構函式。
#includeusingnamespace
std;
class
sample
sample(sample &a): x(a.x)
int getx()
};//
形參不是引用
//void disp(sample &s)
void disp(sample s)
intmain()
/*output
call constructor sample(int a)
call constructor sample(sample &a)
call constructor sample(sample &a)
22*/
返回值是非引用物件,返回棧中的物件,函式返回後棧中的物件消失。
#includeusingnamespace
std;
class
sample
sample(
inta): x(a)
sample(sample &a): x(a.x)
~sample()
int getx()
};//
形參是引用
void disp(sample &s)
//返回值不是引用
sample copy(sample &a)
intmain()
/*output
call constructor sample(int a)
call constructor sample(int a)
call copy function
call destructor
22call destructor
call destructor
*/
#includeusingnamespace
std;
class
sample
sample(
inta): x(a)
sample(sample &a): x(a.x)
~sample()
int getx()
};//
形參是引用
void disp(sample &s)
//返回值是引用
sample& copy(sample &a)
intmain()
/*output
call constructor sample(int a)
call constructor sample(int a)
call copy function
call destructor
call constructor sample(sample &a)
2686744
call destructor
call destructor
*/int
main()
/*output
call constructor sample(int a)
call constructor sample(int a)
call copy function
call destructor
22call destructor
call destructor
*/
引用引數與引用返回值
經常看到這樣的宣告 t func t t 這種宣告和t func t t 有什麼區別?書上的解釋是為 了提高效率,究竟是如何提高效率的呢?內部執行了什麼操作?本文通過8個小例子對引用引數 和引用返回進行了一次徹底的排查。首先看一下在類的成員函式中的引用引數和引用返回值 類定義class a 建構函式...
引用 引用型返回值
值形式的函式返回值通常都具有右值屬性,即在函式的呼叫者空間根據函式的返回型別建立乙個匿名物件,負責接收該函式的返回值 用於接收函式返回值的匿名物件和表示式的值類似,通常只具有語句級生命期且唯讀,即所謂將亡右值 如果函式返回的是乙個引用,那麼用於接收該返回值的就不再是乙個匿名的將亡右值物件,而是乙個引...
引用做引數與引用做返回值
一 引用做引數 引用做引數時,和c語言中的 傳址 是乙個道理,即通過函式來改變身處主函式中的變數。例 void fun int b int main 執行fun函式後,主函式中的整型變數a的值就變為了22,因為a和b實際上是同一處空間但是有了不同的名字。可以拓展到交換主函式中變數的值 void fu...