|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
||||||
Указатель на объект, или экземпляр класса?01.10.2014, 19:16. Показов 6991. Ответов 20
Метки нет (Все метки)
Здравствуйте Уважаемые программисты!
Недавно я начал изучать программирование с использованием С++. Ранее не программировал. В качестве источников информации и плана обучения использую книги: - Джесс Либерти, Брэдли Джонс "Освой самостоятельно С++ за 21 день. Пятое издание." 2008 года; - Бьерн Страцуступ "Программирование. Принципы и практика использования С++" 2011 года. Основным учебником для меня является книга Джесса Либерти, т.к. излагаемый там материал, более доступен для моего восприятия (т.к. опыт в программировании нулевой). Я понимаю, что С++ по этой программе я не освою, но начинать с чего то надо, после изучения данного материала, планирую изучать книгу Бьерна Страуступа и т.д. (конечно же не просто изучать, а практиковать программирование в рамках обучающей программы, которую предлагают вышеуказанные авторы). Решаемая задача: Учебник Джесса Либерти.День 8-й. Тема: Доступ к переменным-членам. На странице 219 опубликован Листинг 8.6. Обращение к данным-членам объектов, размещенных в динамической памяти.
Frisky is 2 years old Frisky is 5 years old АНАЛИЗ: Код строки 20 создает в динамической памяти объект Frisky - экземпляр класса SimpleCat. Стандартный конструктор устанавливает его возраст равным 2. В строке 21 находится вызов метода GetAge(), позволяющего удостоверится в том, что конструктор сработал нормально. Поскольку речь идет об указателе, для обращения к его данным-членам и функциям, используется оператор косвенного доступа (->). В строке 22 метод SetAge() устанавливает новое значение возраста, а метод GetAge() в строке 23 еще раз выводит его на экран. Вопрос: 1. Исходя из предыдущей темы данного учебника "Указатели", возникло недопонимание строки 20. Ведь по идее в этом коде "SimpleCat * Frisky = new SimpleCat" создается указатель Frisky на класс SimpleCat и выделяется для этого класса участок в динамически распределяемой памяти (т.е. создается экземпляр класса). 2. Как в данной ситуации создать в динамической памяти объект Frisky класса Cat и как воспользоваться переменными и функциями этого объекта (объект находится в динамически распределяемой памяти). 3. Как создать указатель на объект, ане на класс. 4. Что в действительности происходит в этом коде? Возможно мои вопросы покажутся смешными, но они возникают в следствии непонимания данного материала и отсутствия опыта в программировании. Прошу Вас помочь мне в решении возникших вопросов. При составлении ответа, или комментария, прошу учесть мой уровень, в связи с чем убедительно прошу строить ответ наиболее подробно, приводя простейшие примеры. Надеюсь на вашу поддержку и взаимопонимание. Также прошу обратить внимание на выбранную мной литературу в качестве обучающего с нуля материала. Если у вас есть другие предложения по поводу выбора источника обучения - буду вам признателен, если подскажете что-нибудь более подходящее и эффективное. С Уважением, Александр.
0
|
||||||
| 01.10.2014, 19:16 | |
|
Ответы с готовыми решениями:
20
Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект Обращение к методам класса через указатель на экземпляр класса Создание статической функции класса, которая принимает экземпляр этого же класса как объект |
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 01.10.2014, 19:28 | ||
|
По идее, после того как ты осознаешь вышесказанное, все остальные вопросы должны отпасть.
2
|
||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
| 01.10.2014, 20:42 | ||||||
|
Добавлено через 43 секунды Добавлено через 1 минуту
1
|
||||||
|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
|
| 01.10.2014, 21:18 [ТС] | |
|
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 01.10.2014, 21:28 | |
|
1
|
|
|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
||
| 01.10.2014, 21:40 [ТС] | ||
|
0
|
||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 01.10.2014, 21:44 | |
|
Zaspir, как насчёт скрина?
1
|
|
|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
||
| 01.10.2014, 21:45 [ТС] | ||
|
0
|
||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 01.10.2014, 21:59 | |
|
1
|
|
|
Комп_Оратор)
|
|||||||
| 01.10.2014, 22:32 | |||||||
1
|
|||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 02.10.2014, 00:04 | ||
|
1) Класс - это как чертеж. 2) Объект - это как изделие по этому чертежу. ------------- Указатель на класс в твоем понимании не может существовать, потому что класс - это сущность описательная, она не существует (тут есть нюанс, но на данном этапе он несущественен) во время выполнения программы, следовательно не может иметь адреса, а следовательно и указателя, содержащего этот адрес. Класс - это метаинформация времени компиляции, о том, как следует создавать и оперировать объектом - указание компилятору что и как располагать в памяти. А вот объект - это воплощение класса, экземпляр. Он располагается в памяти, следовательно имеет адрес, следовательно указатель на объект тоже может существовать. Указатель, кстати, - это тоже объект и у него тоже есть свой собственный адрес. Объекты в С++ могут хранится в разных местах: в статической памяти (static storage duration), на стеке (automatic storage duration), в динамической памяти (dynamic storage duration), в области памяти, локальной для потока (thread storage duration). В скобках верные термины - привыкай к ним
2
|
||
|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
|
| 02.10.2014, 11:54 [ТС] | |
|
1
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 02.10.2014, 12:06 | |
|
Я почему сомневался? Беру другие издания этой книги, и там всё правильно написано, а точно такое издание не смог найти. В вашем же издании - явная ошибка.
1
|
|
|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
|
| 02.10.2014, 18:12 [ТС] | |
|
alsav22, я прошел по ссылке Литература C++, которую Вы предложили, но книги, предлагаемые в том разделе, не соответствуют моему уровню. А именно. В подразделе Hello Word, подразумевается перечень литературы, ориентированный на новичков, способных приложив немного усилий, написать программу, используя одну директиву, одну основную функцию, в теле которой задействован стандартный поток с оператором вывода символов "Hello Word! ". Конечно же, это не самоцель. Если бы все так и было, было бы действительно замечательно, но авторы тех книг, предполагают наличие начального опыта в программировании. А значит, некоторые моменты для объяснения опускаются. Иначе, при прочтении подобных книг, я не стал бы задавать вопросы, подобные тем, с которого началась моя тема.
У меня к Вам нижайшая просьба, пожалуйста, посоветуйте действительно подходящую для меня литературу. Что бы изучив её, я смог приступить изучение книг Страуступа, Брюса Эккеля и т.д. Мне нужно хорошее начало. Заранее благодарю Вас, а также других участников форума, чье мнение и предложения, окажут помощь в освоении программирования на С++. С Уважением, Александр.
0
|
|
|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
|
| 02.10.2014, 18:13 [ТС] | |
|
Забыл выложить маленький скрин
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 02.10.2014, 18:16 | |
|
Я по Прата учил, рекомендую: "Прата С. Язык программирования С++ Лекции и упражнения 2011."
Другие другое порекомендуют.
1
|
|
|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
|
| 02.10.2014, 18:29 [ТС] | |
|
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 02.10.2014, 19:12 | |
|
2
|
|
| 02.10.2014, 20:39 | |
|
0
|
|
| 02.10.2014, 20:39 | |
|
Помогаю со студенческими работами здесь
20
указатель на экземпляр шаблонного класса Указатель на экземпляр шаблонного класса
Использование в качестве поля класса указатель на объект другого класса Указатель на объект базового класса и адрес объекта производного класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|