Внешнее определение методов класса

Метод должен быть обязательно определен или по крайней мере описан в теле (в спецификации класса). В отличие от обычных (глобальных) функций метод имеет доступ ко всем полям данных и методов класса (независимо от статуса доступа). Функция-метод имеет в качестве области видимости класс, к которому она относится.

При определении классов их методы также могут быть специфицированы как подставляемые (inline). Кроме явного применения служебного слова inline для этого используется следующее соглашение: если определение (не прототип) принадлежащей классу функции полностью размещено в классе (в теле класса), то эта функция по умолчанию считается подставляемой. При каждом вызове этих функций их код «встраивается» непосредственно в точку вызова.

Существует второй способ определения при-надлежащих классу функций. Он состоит в том, что внутри тела класса помещается только прототип метода, а его определение – вне класса, как определение любой другой функции, входящей в программу. При таком внешнем определении метода он также может быть снабжен спецификатором inline.

Во внешнем определении метода программист «должен сообщить» компилятору к какому именно классу он относится. Для этого используется бинарная форма операции :: (указание области видимости). Формат ее использования в этом случае таков:

Имя_класса::имя_метода

Приведенная конструкция, называемая квали-фицированным именем метода, означает, что функция есть метод класса и лежит в его области видимости. Именно такое определение «привязывает» функцию к классу и позволяет в ее теле непосредственно использовать любые поля данных класса (его объектов) и любые принадлежащие классу функции.

При внешнем определении метода класса в теле класса помещается прототип:

Тип_возвращаемого_значения имя_метода

(спецификация__и_инициализация_параметров);

Вне тела класса метод определяется:

Тип_возвращаемого_значения


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: