類成員指標及成員函式指標
阿新 • • 發佈:2019-02-11
如果我們要指定一個指向類內部元素的指標,那我們該怎麼操作呢
假設我們定義了一個類:裡面有兩個變數和兩個函式
struct Vector
{
public:
int x;
int y;
public:
Vector(int tX, int tY) :x{ tX }, y{ tY } {}
int getX() const {
return x;
}
int getY() const {
return y;
}
假設我們要定義指向函式和元素的指標,我們可以這樣進行定義
int Vector::*px = &Vector::x; //指向成員變數的指標 int Vector::*py = &Vector::y;
呼叫的方式是.*呼叫,這樣就能呼叫對應的變數
Vector v{ 1,2 };
cout << v.*px << endl;
cout << v.*py << endl;
如果我們定義函式指標,可以按照這個格式進行定義
返回值 (類名::*指標名)(引數) const
int ReadFucPointer(Vector v, int (Vector::*p)() const) {
return (v.*p)(); //因為優先順序問題,兩邊都要加括號
}
返回值這裡,如果我們寫成v.*p()會因為優先順序問題而忽略後面的括號,因此必須要先加上括號
呼叫方法如下:
cout << ReadFucPointer(v, &Vector::getX) << endl;
cout << ReadFucPointer(v, &Vector::getY) << endl;