#include <iostream>
using namespace std;
int main() {
int a=1;
int & a1=a;//a1 is a reference variable
cout << a1 <<endl;
return 0;
}
之前有提過c++和Java的基本型別變數(int ,double等)都是call by value的
call by reference or value若是想要call by reference,在c++可以用reference帶替pointer(指標)當作傳入函式的參數.如下例:
#include <iostream>
using namespace std;
void sum4(int &);
int main() {
int a=1;
sum4(a);
cout << a <<endl;
return 0;
}
void sum4(int & a) {
a=2;
}
在這個例子中,雖然並沒有建立一個reference變數,但當基本變數a傳入此function sum4()的時候,會自動被當成reference變數來對待,也就是call by reference,因此在函式內改變a的值之後,
原本變數a的值也會一起被改變.
#include <iostream>
using namespace std;
int & sum5(int &);
int main() {
int a=1;
sum5(a)=3;
cout << a << endl;
return 0;
}
int & sum5(int &a){
return a;
}
因為sum5回傳的是(reference),也就是記憶體位置,因此改變a的值為3,也會同時改變原本的變數值.若在sum5的前方加上關鍵字const,那麼我們便不能直接使用sum5所return回來的reference來改變變數值,如下例子:
#include <iostream>
using namespace std;
const int & sum5(int &);
int main() {
int a=1;
sum5(a)=3;
cout << a << endl;
return 0;
}
const int & sum5(int &a){
return a;
}
"那些年,我們一起追的女孩,觀後感"
沒有留言:
張貼留言