C++.Бархатный путь



         

Указатели на компоненты класса. Доступ по указателю - часть 3


long val_2 = (pq->*fp0)(); /* Вызов функции-члена класса по указателю с помощью указателя на объект. */ int (XXX::*fp_3) (int) = &XXX::getVal3; /* Проинициализированный указатель на функцию-член класса. С параметрами типа int. */ int val_3 = (q.*fp_3)(6); /* Вызов функции-члена класса по указателю из объекта с передачей параметров. */ char* (XXX::*fp_4) (char) = &XXX::getVal3; /* Проинициализированный указатель на функцию-член класса с параметрами типа int. */ char val_4 = (pq->*fp4)("new string"); /* Вызов функции-члена класса по указателю с помощью указателя на объект. */ int (*fp_5) () = &XXX::f1; /* Указатель на статическую функцию объявляется без спецификации класса. Явная спецификация класса необходима лишь при инициализации указателя. */ int retval = (*fp_5)(); /*Вызов статической функции по указателю.*/ fp_5 = XXX::f2; /* Перенастройка статического указателя. Главное требование - совпадение списков параметров и типа возвращаемого значения. */ int (*fp_6) (int) = &XXX::f3; /*Указатель на статическую функцию с параметрами.*/ int retval = (*fp_6)(255); /*Вызов статической функции с параметрами по указателю.*/ long (XXX::*px1) = &XXX::x1; /*Определили и проинициализировали указатель на член класса long*/ q.*px11 = 10; /*Используя указатель на компоненту класса, изменили значение переменной x1 объекта q, представляющего класс XXX. */ pq->*px11 = 10; /*Используя указатель на компоненту класса, изменили значение переменной x1 объекта, представляющего класс XXX и расположенного по адресу pq. */ }

Вызов статических функций-членов класса не требует никаких объектов и указателей на объекты. От обычных функций их отличает лишь специфическая область видимости.




Содержание  Назад  Вперед