搜尋此網誌

2011年7月16日 星期六

C++ Reference Variables Usage(C++參考變數的使用)

可以把參考變數(Reference Variable)想像成一個變數的別名或替代名稱.而且此變數和原來的變數存在於共同的記憶體位置,並且擁有相同的值.

#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的值也會一起被改變.

  • Reference變數也可以當作函式的回傳值.


  • #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;
    }

    "那些年,我們一起追的女孩,觀後感"

    沒有留言:

    張貼留言