標籤:
1.指向對像的指標
在建立對像時,編譯系統會為每一個對像分配一定的儲存空間,以存放其成員,對像空間的起始地址就是
對像的指標。可以定義一個指標變數,用來存和對像的指標。如果有一個類:
class Time
{
public:
int hour;
int minute;
int sec;
void get_time();
};
void Time::get_time()
{
cout << hour << ":" << minute << ":" << sec << endl;
}
在此有以下語句:
Time *pt;//定義pt 為指向Time類對像的指標變數
Time t1;//定義t1為Time類對像
pt=&t1;//將t1的起始地址賦給pt
這樣,pt 就是指向Time類對象的指標變數,它指向對象t1。
定義指向類對象的指標變數的一般形式為:
類名 *對象指標名;
可以通過對象指標訪問對象和對象的成員。如:
*pt pt所指向的對像,即t1
(*pt).hour pt所指向的對象中的hour成員,即t1.hour
pt->get_time() pt把指向的對象中的get_time函數,即t1.get_time()
(*pt).get_time()
2.指向對象成員的指標
a.指向對象資料成員的指標
定義指向對象資料成員的指標的方法與定主指向變通的指標變數的方法相同。如:
int *p;
定義指向對象資料成員的指標變數的一般形式為:
資料類型名 *指標變數名;
b.指向對象成員函數的指標
定義指向對象成員函數的指標變數的方法和定義指向變通函數的指標變數方法有所不同。
定義指向變通函數的指標變數的方法:
資料類型名 (*指標變數名)();如:
void (*p)();//p是指向void型函的指標變數
定義指向成員函的指標:
資料類型名 (類名::*指標變數名)();
使指標變數指向一個公用成員函數的一般形式為
指標變數名=&類名::成員函數名;
樣本:
#include <iostream>
using namespace std;
class Time
{
public:
Time(int ,int ,int );
int hour;
int minute;
int sec;
void get_time();
};
Time::Time(int h,int m,int s)
{
hour = h;
minute= m;
sec = s;
}
void Time::get_time()
{
cout << hour << ":" << minute << ":" << sec << endl;
}
int main()
{
Time t1(10,13,56); //定義Time類對象t1
int *p1=&t1.hour;//定義指向整型資料的指標變數p1,並使p1指向t1.hour
cout << *p1 << endl;
t1.get_time();//調用對象t1的成員函數get_time()
Time *p2=&t1;//定義指向Time類對象的指標變數p2,並使p2指向t1
p2->get_time();//調用p2所指向對象的get_time()函數
void (Time::*p3)();//定義指向Time類公用成員函數get_time
p3 = &Time::get_time;//使p3指向Time類公用成員函數get_time
(t1.*p3)();//調用對象t1中p3所指的成員函數
return 0;
}
c++對象指標-01(轉載)