Составители:
Рубрика:
Ниже перечислены правила использования указателей на методы классов.
• Указателю на метод можно присваивать только адреса методов, имеющих соответст-
вующий заголовок.
• Нельзя определить указатель на статический метод класса.
• Нельзя преобразовать указатель на метод в указатель на обычную функцию, не яв-
ляющуюся элементом класса.
Как и указатели на обычные функции, указатели на методы используются в том
случае, когда возникает необходимость вызвать метод, имя которого неизвестно. Однако
в отличие указателя на переменную или обычную функцию, указатель на метод не ссы-
лается на определенный адрес памяти. Он больше похож на индекс в массиве, поскольку
задает смещение. Конкретный адрес в памяти получается путем сочетания указателя на
метод с указателем на определенный объект. Формат указателя на поле класса:
тип_данных(имя_класса::*имя_указателя);
В определение указателя можно включить его инициализацию в форме:
&имя_класса::*имя_поля; // Поле должно быть public
Следует обратить внимание на то, что указатели на поля классов не являются
обычными указателями – ведь при присваивании им значений они не ссылаются на
конкретный адрес памяти, поскольку память выделяется не под классы, а под объек-
ты классов.
Можно создать
константный объект, значения полей которого изменять запре-
щается. К нему должны применяться только
константные методы. Пример:
class X
{
...
int get_boy() const {return boy;}
};
const X Dn(0, 0): // Константный объект
cout << Dn.get_boy();
Свойства константного метода:
• объявляется с ключевым словом const после списка параметров;
• не может изменять значения полей класса;
• может вызывать только константные методы;
• может вызываться для любых (не только константных) объектов.
Рекомендуется описывать как константные те методы, которые предназначены для
получения значений полей.
Классы могут быть
глобальными (объявленными вне любого блока) и локальными
(объявленными внутри блока, например, функции или другого класса). Рассмотрим не-
которые особенности локального класса:
• внутри локального класса можно использовать типы, статические (static) и внеш-
ние (extern) переменные, внешние функции и элементы перечислений из области,
в которой он описан; запрещается использовать автоматические переменные из
этой области;
• локальный класс не может иметь статических элементов;
84
Ниже перечислены правила использования указателей на методы классов.
• Указателю на метод можно присваивать только адреса методов, имеющих соответст-
вующий заголовок.
• Нельзя определить указатель на статический метод класса.
• Нельзя преобразовать указатель на метод в указатель на обычную функцию, не яв-
ляющуюся элементом класса.
Как и указатели на обычные функции, указатели на методы используются в том
случае, когда возникает необходимость вызвать метод, имя которого неизвестно. Однако
в отличие указателя на переменную или обычную функцию, указатель на метод не ссы-
лается на определенный адрес памяти. Он больше похож на индекс в массиве, поскольку
задает смещение. Конкретный адрес в памяти получается путем сочетания указателя на
метод с указателем на определенный объект. Формат указателя на поле класса:
тип_данных(имя_класса::*имя_указателя);
В определение указателя можно включить его инициализацию в форме:
&имя_класса::*имя_поля; // Поле должно быть public
Следует обратить внимание на то, что указатели на поля классов не являются
обычными указателями – ведь при присваивании им значений они не ссылаются на
конкретный адрес памяти, поскольку память выделяется не под классы, а под объек-
ты классов.
Можно создать константный объект, значения полей которого изменять запре-
щается. К нему должны применяться только константные методы. Пример:
class X
{
...
int get_boy() const {return boy;}
};
const X Dn(0, 0): // Константный объект
cout << Dn.get_boy();
Свойства константного метода:
• объявляется с ключевым словом const после списка параметров;
• не может изменять значения полей класса;
• может вызывать только константные методы;
• может вызываться для любых (не только константных) объектов.
Рекомендуется описывать как константные те методы, которые предназначены для
получения значений полей.
Классы могут быть глобальными (объявленными вне любого блока) и локальными
(объявленными внутри блока, например, функции или другого класса). Рассмотрим не-
которые особенности локального класса:
• внутри локального класса можно использовать типы, статические (static) и внеш-
ние (extern) переменные, внешние функции и элементы перечислений из области,
в которой он описан; запрещается использовать автоматические переменные из
этой области;
• локальный класс не может иметь статических элементов;
84
Страницы
- « первая
- ‹ предыдущая
- …
- 82
- 83
- 84
- 85
- 86
- …
- следующая ›
- последняя »
