Язык С++ и программирование на нем. Рейзлин В.И. - 90 стр.

UptoLike

Составители: 

92
public:
int f (char*, int);
void g();
. . .
};
Как и для указателя на обычную функцию, при объявлении указа-
теля на компонентную функцию необходимо объявить типы результата
и аргументов функции, на которую заводится указатель. Как обычно,
указатель можно инициализировать при объявлении:
int (cl ::*fptr) (char *, int) = cl::f;
Пример:
struct s {int mem;
s (int a){mem=a;}
void func(int a){cout<<a+mem<<’\n’;}
};
void main(){
void (s::*fp)(int) = s::func;
s obj(5);
s *p = &obj;
// Два варианта вызова функции-члена по указате-
лю
(obj.*fp)(6); // используя объект obj типа s
(p->*fp)(9); // и указатель p на него.
}
Здесь .* (как и ->*) являются символами одной единственной
операци, а не находящимися рядом символами двух ранее знакомых нам
операций ‘.’ (‘->’) и *. Правым операндом операций .* и ->* обяза-
тельно должен быть указатель на член класса, а не любой указатель.
18.8. Инициализация данныхчленов класса
Инициализация членов абстрактных типов
Пусть класс содержит в себе члены абстрактных типов. Особен-
ностью их инициализации является то, что она выполняется с помощью
соответствующего конструктора. Рассмотрим класс
class coord {double x, y, z;