1. 程式人生 > >類成員指標及成員函式指標

類成員指標及成員函式指標

如果我們要指定一個指向類內部元素的指標,那我們該怎麼操作呢

假設我們定義了一個類:裡面有兩個變數和兩個函式

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;