國立屏東大學 資訊工程學系 物件導向程式設計
C++與C語言一樣,提供了指標以存取特定的記憶體位址,其用法與C語言並無二致,在此不予贅述。
C++讓我們可以為某個變數,建立一個「別名」。
using namespace std;
#include <iostream>
int main ()
{
double a = 3.1415927;
int *p;
double &b = a; // b is a
b = 89;
cout << "a contains: " << a << endl; // Displays 89.
return 0;
}
在上述範例中,b被稱為參考變數(reference variable),我們在宣告b時,使用&b=a來讓b成為a的分身。要注意的是,一但宣告後,不可以再改變其參考的對象。
參考變數也可以用在函式的引數宣告,例如下面的程式碼:
using namespace std;
#include <iostream>
void change (double &r, double s)
{
r = 100;
s = 200;
}
int main ()
{
double k, m;
k = 3;
m = 4;
change (k, m);
cout << k << ", " << m << endl; // Displays 100, 4.
return 0;
}
這種將參考傳入函式做為引數的方法,稱為Call by Reference。下面則是以指標的方式,將前述程式再實作一次:
using namespace std;
#include <iostream>
void change (double *r, double s)
{
*r = 100;
s = 200;
}
int main ()
{
double k, m;
k = 3;
m = 4;
change (&k, m);
cout << k << ", " << m << endl; // Displays 100, 4.
return 0;
}
下面的程式則又複雜了一點:
using namespace std;
#include <iostream>
double &biggest (double &r, double &s)
{
if (r > s) return r;
else return s;
}
int main ()
{
double k = 3;
double m = 7;
cout << "k: " << k << endl; // Displays 3
cout << "m: " << m << endl; // Displays 7
cout << endl;
biggest (k, m) = 10;
cout << "k: " << k << endl; // Displays 3
cout << "m: " << m << endl; // Displays 10
cout << endl;
biggest (k, m) ++;
cout << "k: " << k << endl; // Displays 3
cout << "m: " << m << endl; // Displays 11
cout << endl;
return 0;
}
這個程式蠻有趣的吧!