Чтение онлайн

на главную - закладки

Жанры

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

Либерти Джесс

Шрифт:

13: int itsAge; // переменная-член

14: };

15:

16: // GetAge, открытая функция доступа,

17:// возвращает значение переменной-члена itsAge

18: int Cat::GetAge

19: {

20: return itsAge;

21: }

22:

23: // Определение открытой функции доступа SetAge

24: // Функция SetAge

25: // инициирует переменную-член itsAge

26: void Cat::SetAge(int age)

27: {

28: // устанавливаем переменную-член itsAge равной

29: // значению, переданному с помощью параметра age

30: itsAge = age;

31: }

32:

33: //

Определение метода Meow

34: // возвращает void

35: // параметров нет

36: // используется для вывода на экран текста "Meow"

37: void Cat::Meow

38: {

39: cout << "Meow.\n";

40: }

41:

42: // Создаем виртуальную кошку, устанавливаем ее возраст, разрешаем

43: // ей мяукнуть, сообщаем ее возраст, затем снова "мяукаем".

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;

Конструкторы и деструкторы, заданные по умолчанию

Поделиться:
Популярные книги

Возвышение Меркурия. Книга 12

Кронос Александр
12. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 12

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Золушка вне правил

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.83
рейтинг книги
Золушка вне правил

Последний Паладин

Саваровский Роман
1. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин

Приручитель женщин-монстров. Том 6

Дорничев Дмитрий
6. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 6

Попала, или Кто кого

Юнина Наталья
Любовные романы:
современные любовные романы
5.88
рейтинг книги
Попала, или Кто кого

Тринадцатый IV

NikL
4. Видящий смерть
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Тринадцатый IV

Ваше Сиятельство 8

Моури Эрли
8. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 8

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Целитель. Книга вторая

Первухин Андрей Евгеньевич
2. Целитель
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Целитель. Книга вторая

Вечный. Книга IV

Рокотов Алексей
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга IV

Законы Рода. Том 4

Flow Ascold
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 4

Хозяйка лавандовой долины

Скор Элен
2. Хозяйка своей судьбы
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Хозяйка лавандовой долины

Матабар

Клеванский Кирилл Сергеевич
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар