Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 73

Подставляемые функции обычно являются функциями-членами класса. Часто их определения (т.е. сами функции) размещаются в заголовочном файле вслед за объявлением класса. (Это единственный случай, когда можно раз­мещать код в заголовочном файле.) Поскольку функция GetSpeedQ, упомя­нутая выше, очень мала, она легко может быть сделана подставляемой. Вот как это выглядит:

inline int Airplane::GetSpeed() {

return speed; // speed является переменной-членом класса

}

Подставляемая функция может быть также определена в объявлении класса. Я еще не рассказывал о классах, поэтому отложим обсуждение этой возможности до завтра.

Заключение

Итак, вы преодолели довольно тяжелый, но важный этап. Сегодня мы рассмотрели указатели и ссылки. Если вы смогли разобраться в указателях, то вы твердо стоите на пути к пониманию Си++. Попутно при обсуждении указателей мы рассмотрели локальное и динамическое распределение памяти, что привело к необходимости изучения операторов new и delete. Сегодняшний день завершился рассмотрением тех дополнительных возможностей, которые предоставляет Си++ при использовании функций по сравнению с языком Си.

Вопросы и задания

Этот раздел содержит вопросы, которые помогут вам закрепить пройден­ный материал, и упражнения, которые дадут опыт практического применения изученного. Ответы на вопросы приведены в приложении А.

Вопросы и ответы

Я путаюсь в указателях и ссылках. Это свойственно только мне?

Конечно, нет! Указатели и ссылки достаточно сложны для понимания, и чтобы в них разобраться, требуется некоторое время. Вероятно, вам просто нужно поработать какое-то время с Си++.

Должен ли я каждый раз уничтожать динамический объект, созданный с помощью оператора new?

И да, и нет. Все объекты, созданные с помощью new, должны иметь соответствующий delete, иначе программа вызовет «утечку» памяти. Од­нако в некоторых случаях за уничтожение объектов отвечают объекты- предки. Таким образом, вопрос состоит не в том, нужно ли уничтожать объект, а в том, кто должен это делать. Для ваших собственных классов вы всегда будете использовать оператор delete. Позже, когда вы узнаете о VCL (на пятый день, «Библиотеки классов Си++ и модель визуальных компонентов»), вы увидите, что объекты-предки VCL отвечают за унич­тожение объектов-потомков.

Web-дизайн (с) 2010 - 2017 All rights reserved