|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.01.2013, 19:16 | #1 |
Пользователь
Регистрация: 07.01.2013
Сообщений: 10
|
Указатели вместе с классами (class)
Здравствуйте, я пытаюсь учить С++. Сейчас вот застрял на указателях вместе с классами. Обе темы по отдельности я освоил, но когда они вместе, то не понятно.
Нашёл в инете следующую программу: Код:
В этой программе я не нашёл ОБЪЕКТА. Насколько я помню объект в этом случае должен создаваться так: Код:
Frisky по логике это ведь указатель на экземпляр класса SimpleCat. А где тогда объект с помощью которого можно обращаться к переменным класса? В этой программе откуда я привёл пример к переменным класса обращаются при помощи Frisky таким образом: Код C++ Код:
Вот описание к коду которое было при нём: Анализ: В строке 19 в области динамического обмена выделяется память для хранения экземпляра класса SimpleCat. Конструктор, вызываемый по умолчанию, присваивает новому объекту возраст два года. Это значение получено как результат выполнения функции-члена GetAge(), которая вызывается в строке 20. Поскольку мы имеем дело с указателем на объект, для вызова функции используется оператор косвенного обращения к члену класса (->). В строке 21 для установки нового значения возраста вызывается метод SetAge(), а повторный вызов функции GetAge() (строка 22) позволяет получить это значение. Последний раз редактировалось koderman; 07.01.2013 в 19:47. |
07.01.2013, 19:21 | #2 | ||
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Frisky; // указатель на объект *Frisky // разыменовываем указатель, получаем объект Цитата:
(*Frisky).SetAge(5); |
||
07.01.2013, 19:22 | #3 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
в чем вопрос-то?
|
07.01.2013, 19:24 | #4 |
Пользователь
Регистрация: 07.01.2013
Сообщений: 10
|
Это
Код:
Код:
Последний раз редактировалось koderman; 07.01.2013 в 19:40. |
07.01.2013, 19:26 | #5 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
ЗЫ. пользуйся тегами CODE для выделения кода, будет красиво ) и номера строк руками ставить не надо |
|
07.01.2013, 19:27 | #6 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
|
|
07.01.2013, 19:30 | #7 |
Пользователь
Регистрация: 07.01.2013
Сообщений: 10
|
Кароче здесь создаётся одновременно и указатель на класс SimpleCat и объект?
Код:
Frisky;- указатель на объект *Frisky - объект Ага, вот это выражение Код:
Сейчас стало понятней. Вы умеете объяснять)) Последний раз редактировалось koderman; 07.01.2013 в 19:40. |
07.01.2013, 20:02 | #8 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Если у вас есть: SimpleCat obj; вы же не говорите что в имени obj у вас есть указатель, но можно ведь записать: SimpleCat *pointer = &obj; В голове у вас ужасная каша. |
|
07.01.2013, 20:29 | #9 |
Пользователь
Регистрация: 07.01.2013
Сообщений: 10
|
|
11.01.2013, 15:07 | #10 |
Форумчанин
Регистрация: 11.01.2013
Сообщений: 149
|
Я думаю здесь пытаются донести что сам объект создается. Но он создается динамически и он создается в так называемой куче. Но обращение к этому объекту идет через ссылку. Вот и вся разница между:
class object и class *object = new class;
Может это и чушь, но это моя чушь и я ее никому не отдам.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вместе пишем XMLParser class | Smitt&Wesson | C++ Builder | 2 | 29.04.2011 20:57 |
Загрузить библиотеку вместе сразу вместе с программой | Anekdot | Общие вопросы Delphi | 4 | 26.01.2010 23:14 |
помогите template<class> (Шаблоны и указатели) | breate | Общие вопросы C/C++ | 3 | 23.10.2009 23:17 |
Вопрос с классами. | Вадим Буренков | Общие вопросы Delphi | 11 | 13.07.2009 10:57 |
[C] массивы, указатели, двойные указатели. | Iggel | Общие вопросы C/C++ | 5 | 05.05.2009 12:39 |