Составители:
Рубрика:
26
3.4. Определение компонентных функций класса
Компонентные функции класса могут быть определены как в теле класса
(такой способ использован во всех приведенных примерах), так и за телом класса
на внешнем уровне программы. Для методов класса, определенных внутри тела
класса, компилятор применяет модификатор inline, то есть объявляет такие мето-
ды встраиваемыми (подставляемыми)
функциями. Таким образом, на эти функции
накладываются ограничения, аналогичные ограничениям для inline-функций (не
могут содержать циклов, оператор-переключатель и оператор безусловного пере-
хода, не могут быть рекурсивными и т.д.). Если метод класса определен в теле
класса и не удовлетворяет какому-либо из перечисленных условий (например, со-
держит оператор цикла for
), то компилятор транслирует данный метод как обыч-
ную, не подставляемую функцию, при этом выводя предупреждение времени
компиляции (в BC++ v5.02 «Functions containing for are not expanded inline»). Для
компонентных функций, определенных вне тела класса, никаких ограничений не
существует, подставляемыми по умолчанию они не объявляются и предупрежде-
ний при их компиляции не возникает.
При объявлении метода вне тела класса внутри
класса помещается лишь
прототип метода, а на внешнем уровне программы вслед за объявлением класса
помещается определение функции в виде:
тип_функции имя_класса :: имя_метода (список_формальных_параметров)
{тело метода}
Для класса array на внешнем уровне можно определить функции ReadMas и
WriteMas, поскольку они содержат циклы.
// Листинг 11. Определение метода класса на внешнем уровне
class array
{ …
public:
….
void ReadMas();
void WriteMas();
3.4. Определение компонентных функций класса Компонентные функции класса могут быть определены как в теле класса (такой способ использован во всех приведенных примерах), так и за телом класса на внешнем уровне программы. Для методов класса, определенных внутри тела класса, компилятор применяет модификатор inline, то есть объявляет такие мето- ды встраиваемыми (подставляемыми) функциями. Таким образом, на эти функции накладываются ограничения, аналогичные ограничениям для inline-функций (не могут содержать циклов, оператор-переключатель и оператор безусловного пере- хода, не могут быть рекурсивными и т.д.). Если метод класса определен в теле класса и не удовлетворяет какому-либо из перечисленных условий (например, со- держит оператор цикла for), то компилятор транслирует данный метод как обыч- ную, не подставляемую функцию, при этом выводя предупреждение времени компиляции (в BC++ v5.02 «Functions containing for are not expanded inline»). Для компонентных функций, определенных вне тела класса, никаких ограничений не существует, подставляемыми по умолчанию они не объявляются и предупрежде- ний при их компиляции не возникает. При объявлении метода вне тела класса внутри класса помещается лишь прототип метода, а на внешнем уровне программы вслед за объявлением класса помещается определение функции в виде: тип_функции имя_класса :: имя_метода (список_формальных_параметров) {тело метода} Для класса array на внешнем уровне можно определить функции ReadMas и WriteMas, поскольку они содержат циклы. // Листинг 11. Определение метода класса на внешнем уровне class array {… public: …. void ReadMas(); void WriteMas(); 26
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »