可以有3種方法:
通過對象名和成員運算符訪問對象中的成員;
通過指向對象的指針訪問對象中的成員;
通過對象的引用變量訪問對象中的成員。
一、通過對象名和成員運算符訪問對象中的成員
例如在程序中可以寫出以下語句:
stud1.num=1001;//假設num已定義為公用的整型數據成員
表示將整數1001賦給對象stud1中的數據成員num。其中“.”是成員運算符,用來對成員進行限定,指明所訪問的是哪一個對象中的成員。 注意不能只寫成員名而忽略對象名。
訪問對象中成員的一般形式為
對象名.成員名
不僅可以在類外引用對象的公用數據成員,而且還可以調用對象的公用成員函數,但同樣必須指出對象名,如
stud1.display( );//正確,調用對象stud1的公用成員函數
display( );//錯誤,沒有指明是哪一個對象的display函數
由於沒有指明對象名,編譯時把display作為普通函數處理。 應該注意所訪問的成員是公用的(public )還是私有的(private )。只能訪問public成員,而不能訪問private成員, 如果已定義num為私有數據成員,下面的語句是錯誤的:
stud1.num=10101;//num是私有數據成員,不能被外界引用
在類外只能調用公用的成員函數。在一個類中應當至少有一個公用的成員函數,作為對外的接口,否則就無法對對象進行任何操作。
二、通過指向對象的指針訪問對象中的成員
我們已經介紹了指向結構體變量的指針,可以通過指針引用結構體中的成員。用指針訪問對象中的成員的方法與此類似。如果有以下程序段:
class Time
{
public : //數據成員是公用的
int hour;
int minute;
};Time t,*p;//定義對象t和指針變量p
p=&t;//使p指向對象t
cout<<p->hour;//輸出p指向的對象中的成員hour
在p指向t的前提下,p->hour,(*p).hour和t.hour三者等價。
三、通過對象的引用變量來訪問對象中的成員
如果為一個對象定義了一個引用變量,它們是共占同一段存儲單元的,實際上它們是同一個對象,只是用不同的名字表示而已。因此完全可以通過引用變量來訪問對象中的成員。
如果已聲明了Time類,並有以下定義語句:
Time t1; //定義對象t1
Time &t2=t1;//定義Time類引用變量t2,並使之初始化為t1
cout<<t2.hour;//輸出對象t1中的成員hour
由於t2與t1共占同一段存儲單元(即t2是t1的別名),因此t2.hour就是t1.hour。