|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
||||||
Указатель на объект, или экземпляр класса?01.10.2014, 19:16. Показов 6904. Ответов 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
указатель на экземпляр шаблонного класса Указатель на экземпляр шаблонного класса
Использование в качестве поля класса указатель на объект другого класса Указатель на объект базового класса и адрес объекта производного класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|