Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции АиП.doc
Скачиваний:
90
Добавлен:
15.11.2018
Размер:
668.67 Кб
Скачать

Void Meow();

};

При объявлении класса Cat память не резервируется. Это объявление просто сообщает компилятору о существовании класса Cat, о том, какие данные он содержит (переменные itsAge и itsWeight), а также о том, что он умеет делать (метод Meow)). Кроме того, объявление сообщает компилятору о размере класса Cat, т.е. сколько места должен зарезервировать компилятор для каждого объекта класса Cat. Поскольку в приведенном примере для целого значения требуются четыре байта, размер объекта Cat составит восемь байтов (четыре байта для переменной itsAge и четыре – для itsWeight). Метод Meow() не требует выделения памяти, поскольку для функций-членов (методов) объекта пространство в памяти не резервируется.

Объект нового типа определяется точно так же, как и любая целочисленная переменная:

unsigned int GrossWeight;

Cat Frisky;

В этом коде определяется переменная GrossWeight, которая имеет тип unsigned int, а также определяется объект Frisky класса (или типа) Cat.

Кот – это разновидность домашнего животного, но никто не заводит дома разновидность, обычно покупают конкретного живого котенка. То есть, существует различие между абстрактным котом как понятием и конкретным котенком Фриски. Точно так же в языке С++ существует различие между классом Cat, который является концепцией кота, и каждым конкретным объектом класса Cat, который гуляет сам по себе. Таким образом, Frisky – это объект типа Cat, точно так же, как и GrossWeight является переменной типа unsigned int.

Объект – это конкретный экземпляр абстрактного класса. После определения реального объекта класса Cat, например Cat Frisky, возникает необходимость получить доступ к членам этого объекта. Для этого используется точечный оператор (.), который позволяет обратиться к элементам объекта непосредственно. Следовательно, чтобы присвоить число 50 переменной-члену Weight объекта Frisky, можно написать:

Frisky.itsWeight=50;

Аналогично для вызова метода Meow() достаточно использовать следующую запись:

Frisky.Meow();

Когда необходимо использовать определенный метод класса, выполняется вызов этого метода. В данном случае осуществляется вызов метода Meow() объекта Frisky.

В языке С++ нельзя присвоить значение типу данных, они присваиваются только переменным. Например, нельзя написать

int =5; // неверно!!!

Компилятор пометит эту строку как ошибочную, поскольку нельзя присваивать число 5 типу int. Вместо этого нужно определить целочисленную переменную и присвоить ей число 5. Например:

int x;

x=5;

Точно также недопустима следующая строка:

Cat.itsAge=5 // неверно!!!

Компилятор снова пометит эту строку как ошибочную, поскольку нельзя присвоить число 5 части класса Cat, ведь это всего лишь декларация. Сначала необходимо создать объект класса Cat, а затем его переменной itsAge присвоить значение 5. Например:

Cat Fricky; // то же, что и int x;

Frisky.itsAge=5; // то же, что и x=5;

    1. Закрытые и открытые члены класса

В объявлении класса используются и другие ключевые слова. Двумя самыми важными из них являются public (открытый) и private (закрытый). Они применимы для всех членов класса: и переменных-членов, и методов. К закрытым членам могут обращаться только те методы, которые принадлежат этому классу. Открытые члены доступны для всех других функций программы. Вернемся к примеру

Class Cat

{

unsigned int itsAge;

unsigned int itsWeight;