C++的成員指標

Crawler_Star發表於2015-12-21

C++的成員指標平時不怎麼用,雖然是冷僻的知識,但是還是值得去了解下。成員指標與一般指標的最大區別就是類內部是沒有地址的,所以成員指標要理解為“類中偏移量”。

還是先貼出程式碼,比較好說。

class Simple{
public:
    int a,b;
    int f(float) const{return 1;}
    int f(int) const{return 1;}
};

int (Simple::*fp)(float)const;

int main()
{
    Simple s;
    int Simple::*pmInt = &Simple::b;
    s.*pmInt = 4; //s.b = 4
    fp = &Simple::f;
    (s.*fp)(1.0); //s.f(1.0)

    Simple *sp = &s;
    sp->*pmInt = 4; //sp->b = 4;
    (sp->*fp)(1.0); //sp->f(1.0)
}

1,成員變數指標,int Simple::*pmInt = &Simple::b這是把Simple的b成員變數的類地址偏移量給了pmInt然後s可以通過這個指標變數來訪問自己的成員變數b
2,成員函式指標,int (Simple::*fp)(float)const是函式指標的定義,在main函式裡,需要對其賦值為成員函式的地址。

相關文章