Форум программистов, компьютерный форум CyberForum.ru

У меня вопрос по классам. На приложенных картинках я выделил непонятные строки. - C++

Восстановить пароль Регистрация
 
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
06.12.2012, 16:04     У меня вопрос по классам. На приложенных картинках я выделил непонятные строки. #1
У меня вопрос по классам. На приложенных картинках я выделил непонятные строки. Строка 9.
Переменная int age объявляется в строке 9? Прямо в скобках функции SetAge? Вообще до этого объявление переменных я видел только в отдельных строках. Например так: int age;
Ладно, если переменная была объявлена в строке 9, то почему в строке 25 в скобках указывается тип переменной age тоесть int?
Миниатюры
У меня вопрос по классам. На приложенных картинках я выделил непонятные строки.   У меня вопрос по классам. На приложенных картинках я выделил непонятные строки.  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 16:04     У меня вопрос по классам. На приложенных картинках я выделил непонятные строки.
Посмотрите здесь:

C++ Вопрос по классам
C++ Вопрос по классам
C++ Вопрос по классам
У меня вопрос C++
C++ Опять у меня к Вам вопрос
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
06.12.2012, 16:07     У меня вопрос по классам. На приложенных картинках я выделил непонятные строки. #2
вообще-то age это аргумент функции (в данном случае функции-члена, но эта тема не относится к классам напрямую). Тебе надо повторить функции в языке Си.
Если ты до этого не сталкивался просто с
функциями с аргументами
или их объявлениями,
или вообще функциями в языке Си,
то классы тебе рано изучать.
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
07.12.2012, 11:45  [ТС]     У меня вопрос по классам. На приложенных картинках я выделил непонятные строки. #3
А, ок. понятно. Тоесть в строке 25 важен только тип int. Имя можно любое писать? И оно может не совпадать в строках 9 и 25?

Добавлено через 19 часов 32 минуты
Про функции я читал, но в привязке с классами это для меня новое.
В строке 9 это значит прототип функции, а в строке 25 определение функции. В строке 9 может и не быть имени age но должен присутствовать тип int, а в строке 25 должен быть и тип и имя int age?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11832 / 6811 / 769
Регистрация: 27.09.2012
Сообщений: 16,887
Записей в блоге: 2
Завершенные тесты: 1
07.12.2012, 11:51     У меня вопрос по классам. На приложенных картинках я выделил непонятные строки. #4
Цитата Сообщение от koderman Посмотреть сообщение
В строке 9 это значит прототип функции, а в строке 25 определение функции. В строке 9 может и не быть имени age но должен присутствовать тип int, а в строке 25 должен быть и тип и имя int age?
Ага.
Цитата Сообщение от koderman Посмотреть сообщение
Имя можно любое писать?
Ага, только чтобы не совпадало с ключевыми словами языка
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
07.01.2013, 15:53  [ТС]     У меня вопрос по классам. На приложенных картинках я выделил непонятные строки. #5
Нашёл в инете следующую программу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2: // Доступ к данным объекта в области динамического обмена
 
3:
 
4: #include <iostream.h>
 
5:
 
6: class SimpleCat
 
7: {
 
8: public:
 
9: SimpleCat() { itsAge = 2; }
 
10: ~SimpleCat() { }
 
11: int GetAge() const { return itsAge; >
 
12: void SetAge(int age) { itsAge = age; }
 
13: private:
 
14: int itsAge;
 
15: };
 
16:
 
17: int main()
 
18: {
 
19: SimpleCat * Frisky = new SimpleCat;
 
20: cout << "Frisky " << Frisky->GetAge() << " years old ";
 
21: Frisky->SetAge(5);
 
22: cout << "Frisky " << Frisky->GetAge() << " years old ";
 
23: delete Frisky;
 
24: return 0;
 
25: }
 
 
 
Результат:
 
Frisky 2 years old
 
Frisky 5 years old
В этой программе я не нашёл объекта. Насколько я помню объект в этом случае должен создаваться так: SimpleCat Frisky;
Тоесть то слово которое идёт после имени класса является объектом. В коде такого нету. По моему Frisky является указателем на экземпляр класса SimpleCat, но это не объект.


Вот описание к коду которое было при нём:

Анализ: В строке 19 в области динамического обмена выделяется память для хранения экземпляра класса SimpleCat. Конструктор, вызываемый по умолчанию, присваивает новому объекту возраст два года. Это значение получено как результат выполнения функции-члена GetAge(), которая вызывается в строке 20. Поскольку мы имеем дело с указателем на объект, для вызова функции используется оператор косвенного обращения к члену класса (->). В строке 21 для установки нового значения возраста вызывается метод SetAge(), а повторный вызов функции GetAge() (строка 22) позволяет получить это значение.
Yandex
Объявления
07.01.2013, 15:53     У меня вопрос по классам. На приложенных картинках я выделил непонятные строки.
Ответ Создать тему
Опции темы

Текущее время: 13:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru