|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
||||||
Указатель на объект, или экземпляр класса?01.10.2014, 19:16. Показов 6917. Ответов 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
Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект Обращение к методам класса через указатель на экземпляр класса Создание статической функции класса, которая принимает экземпляр этого же класса как объект |
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 01.10.2014, 19:28 | ||
|
По идее, после того как ты осознаешь вышесказанное, все остальные вопросы должны отпасть.
2
|
||
|
5499 / 4894 / 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
|
|
|
5499 / 4894 / 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
|
||
|
5499 / 4894 / 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
|
||
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 01.10.2014, 21:59 | |
|
1
|
|
|
Комп_Оратор)
|
|||||||
| 01.10.2014, 22:32 | |||||||
1
|
|||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 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
|
|
|
5499 / 4894 / 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
|
|
|
5499 / 4894 / 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
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 02.10.2014, 19:12 | |
|
2
|
|
| 02.10.2014, 20:39 | |
|
0
|
|
| 02.10.2014, 20:39 | |
|
Помогаю со студенческими работами здесь
20
указатель на экземпляр шаблонного класса Указатель на экземпляр шаблонного класса
Использование в качестве поля класса указатель на объект другого класса Указатель на объект базового класса и адрес объекта производного класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|