1. 程式人生 > >c++ 指向物件成員的指標

c++ 指向物件成員的指標

在c++中類是抽象的,沒有實際記憶體,而物件是具體,是佔有記憶體的,因此物件有地址,存放物件的起始地址的指標變數就是指向物件的指標變數。物件中的成員也是佔有記憶體的,所以,存放物件成員的起始地址的指標變數就是指向物件成員的指標變數。1.指向物件資料成員的指標int *p1;   //定義指向整形資料的變數p1 = &t1.hour;     //把hour的地址賦給p1cout<<*p1<<endl;    //輸出t1.hour的值前提,hour是time類的公共的整形資料,則可以在類外通過指向物件資料成員的指標變數訪問物件資料成員hour;2.指向物件成員函式的指標定義指向公用成員函式的指標變數的一般形式為資料型別名 (類名::*指標變數名)(引數列表);當它指向成員函式時,只需把公用成員函式的入口地址賦給一個指向公用成員函式的指標變數。指標變數名=&類名::成員函式名舉例,用不同方法輸出時間的時,分,秒
#include <iostream>
using namespace std;
class time
{
public:
    time(int h,int m,int s):hour(h),minute(m),second(s) {}
    void show();
    int hour,minute,second;
};
void time::show()
{
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}
int main()
{
    time t1(12,5,34);     //定義time類物件t1並初始化
    t1.show();   
    int *p=&t1.hour;      //定義指向整形資料的指標變數p,並使p指向t1.hour
    cout<<*p<<endl;
    time *p2=&t1;         //定義指向time類物件的指標變數p2,並指向t1
    p2->show();
    void (time::*p3)();   //定義指向time類公用函式的指標變數p3
    p3=&time::show;       //把公用函式的地址賦值給p3
    (t1.*p3)();           //呼叫物件t1中p3所指的成員函式
    return 0;
}