類的成員函式指標

2021-07-03 12:13:08 字數 1507 閱讀 8160

要想弄清楚類的函式成員指標,先得了解什麼是函式指標。

例如:有乙個函式 int add(int a, int b) ;

你可以直接使用add(2, 4)來呼叫該函式;當然,你也可以宣告乙個指向該函式的指標,再通過指標去呼叫函式:

int (*padd)(int , int) = add;    //函式名就代表位址,也可以用&add

padd(2, 4);

這裡的padd就是函式指標,由於是指標變數,占用記憶體的4個位元組,具體存放的是**區中add函式的**,由於函式名就表示函式的入口位址,所以padd就指向該函式,之後就可以用該函式指標去代替具體的函式。

宣告函式指標時有幾個問題需要注意一下:

要用"()"將宣告的指標括起來,之後緊跟的是函式的引數(只需寫明引數型別即可),然後就是函式的返回值。編譯器在解釋這個宣告時會依據操作符的優先順序,首先是第乙個括號裡面的內容,它是乙個指標,再接下來是第二個括號,編譯器會自動把它解釋成函式引數,因為找不到其它合理的解釋了,最後就是這個型別是int型的,大概過程就是這樣。

弄懂了函式指標之後,再來說說類的成員函式指標。顧名思義,成員函式指標就是有乙個指標指向該類的某乙個成員函式:

classpointer.h
class point

;

classpointer.cpp
int point::count = 0;

point::point(int _x, int _y) : x(_x), y(_y)

point::point(point &p) : x(p.x), y(p.y)

point::~point()

int point::getx() const

int point::gety() const

int point::getcount()

mainclass.cpp
int main()

{ point p1(4, 6);

int (point::*pgetx)() const = class::getx;

int (point::*pgety)() const = class::gety;

int (*pgetcount)() = point::getcount; //類point的靜態成員函式的指標

cout<<(p1.*pgetx)()《在上面這段**中,int (point::*pgetx)() const = point::getx 宣告了乙個指標變數pgetx,該指標變數指向point類的成員函式getx。仔細留意一下就會發現,類成員函式指標的宣告和一般函式指標有個很明顯的區別:在宣告指標這個變數和取成員函式位址前都要加上類名和作用域分辨符("::")。接下來就可以使用具體的物件名去呼叫這個函式指標,如:(p1.*pgetx)();

上面就是最基本的函式指標的用法,希望大家都夠作為參考;更加深入的函式指標的內部原理我會陸續更新的。

類成員函式指標

類成員函式指標 類的成員函式分為兩種,一種是靜態函式,另外一種是非靜態函式。例如 class x display 為靜態函式,getvalue即為非靜態函式。兩種函式在使用的時候是不一樣的。靜態函式可以直接由類名來呼叫,而非靜態函式則必須通過某乙個物件來呼叫,例如 x display x x x.g...

類成員函式指標

類成員函式指標的基本用法 1。宣告 已知簡單的類宣告如下 class screen screen public screen forword int num 1 我們可以這樣宣告乙個指向back成員函式的指標 screen screen back fun int para screen back 其...

類成員函式指標

include using namespace std class human 抽象類human class mother public human 派生類mother從抽象類human繼承 覆蓋純虛函式run void eat 覆蓋純虛函式eat class father public human...