C++的函式參數可傳值(pass by value)或傳參照(pass by reference)。
Pass by value的參數值是傳入的引數(arguments)值的複製;pass by reference的參數值則是傳入的引數本身。在參數名稱前加上ampersand符號&
即為傳參照參數。
例如下面的Add_passByRef(int &i)
的參數&i
即為傳參照,所以遞增時改動的i
為外部傳入的引數a
本身;而Add_passByValue(int i)
的參數i
為傳值,遞增時改動的i
為複製於引數a
的值。
main.cpp
#include <iostream>
using namespace std;
void Add_passByRef(int &i) { i++; }
void Add_passByValue(int i) { i++; }
int main() {
int a = 1;
Add_passByRef(a);
cout << a << endl; // 2
Add_passByValue(a);
cout << a << endl; // 2
return 0;
}
由於pass by reference是傳入引數本身因此效率比複製引數的pass by value好。通常引數內容較大時(例如有許多成員的類別物件)會以pass by reference方式傳入。
沒有留言:
張貼留言