Читаем Освой самостоятельно С++ за 21 день. полностью

44: int main

45: {

46:    Cat Frisky;

47:    Frisky.SetAge(5);

48:    Frisky.Meow;

49:    cout << "Frisky is а cat who is ";

50:    cout << Frisky.QetAge << " years old.\n";

51:    Frisky.Meow;

52:    return 0;

53: }


Результат:

Meow.

Frisky is а cat who is 5 years old.

Meow.


Анализ: В строках 6—14 содержится определение класса Cat. Строку 8 занимает ключевое слово public, которое сообщает компилятору, что за ним следует набор открытых членов класса. В строке 9 содержится объявление открытого метода GetAge, который предоставляет доступ к закрытой переменной-члену itsAge, объявляемой в строке 13. В строке 10 объявляется открытая функция доступа SetAge, которая принимает в качестве аргумента целочисленное значение и присваивает переменной itsAge значение этого аргумента.

В строке 11 объявляется метод Meow. Этот метод не является функцией доступа к данным-членам класса, а используется для вывода на экран слова Meow.

В строке 12 начинается закрытый раздел, который включает только одно объявление закрытой переменной-члена itsAge (строка 13). Объявление класса завершается закрывающей фигурной скобкой и точкой с запятой в строке 14.

Строки 18—21 содержат определение функции-члена GetAge. Этот метод не принимает никаких параметров и возвращает целое значение. Обратите внимание на то, что

при определении методов класса используется имя класса, за которым следуют два двоеточия и имя функции (строка 18). Благодаря этому-синтаксису компилятор узнает, что определяемая здесь функция GetAge — это функция, объявленная в классе Cat. За исключением строки заголовка, GetAge создается точно так же, как и другие функции.

Определение функции GetAge занимает только одну строку, в которой указывается, что эта функция возвращает значение переменной-члена itsAge. Обратите внимание, что функция main не может получить доступ к этой переменной, поскольку она объявлена в закрытом разделе класса Cat. При этом из функции main можно обратиться к открытому методу GetAge. А поскольку метод GetAge является функцией-членом класса Cat, то он имеет все права доступа к переменной-члену itsAge. В результате функция GetAge возвращает значение переменной itsAge в функцию main.

В строке 26 начинается определение функции-члена SetAge. Она принимает целочисленный параметр и присваивает переменной itsAge значение этого параметра (строка 30). Являясь членом класса Cat, функция SetAge имеет прямой доступ к переменной-члену itsAge.

В строке 37 начинается определение метода Meow класса Cat. Этот метод занимает всего одну строку, в которой выводится на экран слово Meow, а затем выполняется переход на новую строку. Помните, что для перехода на новую строку используется символ \n.

В строке 44 начинается тело функции main; она не принимает никаких аргументов. В строке 46 в функции main объявляется объект класса Cat с именем Frisky. В строке 47 переменной-члену itsAge присваивается значение 5 с помощью метода доступа SetAge. Обратите внимание, что в вызове этого метода указывается имя объекта (Frisky), за которым следует оператор прямого доступа (.), и имя самого метода (SetAge). Таким способом можно вызывать любые другие методы класса.

В строке 48 вызывается функция-член Meow, а в строке 49 на экран выводится значение переменной-члена с использованием функции доступа GetAge. В строке 51 функция Meow вызывается снова.


Конструкторы и деструкторы

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


int Weight;

// определяем переменную

// здесь следуют другие выражения Weight = 7; // присваиваем значение переменной

Можно также определить переменную и немедленно ее инициализировать, например:

int Weight = 7; // определяем и инициализируем значением 7.


Операция инициализации сочетает в себе определение пербмбнной с присвоением начального значения. Причем ничто не может помешать вам впоследствии изменить это значение. Кроме того, инициализация, проведенная одновременно с определением, гарантирует, что переменная не будет содержать мусор, оставшийся в выделенных переменной ячейках памяти.

Как же инициализировать переменные-члены класса? Для этого в классе используется специальная функция-член, называемая конструктором. При необходимости конструктор может принимать параметры, но не может возвращать значения даже типа void. Конструктор — это метод класса, имя которого совпадает с именем самого класса.

Объявив конструктор, вам также стоит объявить и деструктор. Если конструкторы служат для создания и инициализации объектов класса, то деструкторы удаляют из памяти отработавшие объекты и освобождают выделенную для них память. Деструктору всегда присваивается имя класса с символом тильды (~) вначале. Деструкторы не принимают никаких аргументов и не возвращают никаких значений. Объявление деструктора класса Cat будет выглядеть следующим образом:

~Cat;

Перейти на страницу:

Похожие книги

Сущность технологии СОМ. Библиотека программиста
Сущность технологии СОМ. Библиотека программиста

В этой книге СОМ исследуется с точки зрения разработчика C++. Написанная ведущим специалистом по модели компонентных объектов СОМ, она раскрывает сущность СОМ, помогая разработчикам правильно понять не только методы модели программирования СОМ, но и ее основу. Понимание мотивов создания СОМ и ее аспектов, касающихся распределенных систем, чрезвычайно важно для тех разработчиков, которые желают пойти дальше простейших приложений СОМ и стать по-настоящему эффективными СОМ-программистами. Показывая, почему СОМ для распределенных систем (Distributed СОМ) работает именно так, а не иначе, Дон Бокс дает вам возможность применять эту модель творчески и эффективно для ежедневных задач программирования.

Дональд Бокс

Программирование, программы, базы данных / Программирование / Книги по IT