|
1 / 1 / 0
Регистрация: 27.08.2014
Сообщений: 18
|
||||||
Указатель на объект, или экземпляр класса?01.10.2014, 19:16. Показов 7064. Ответов 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,818
|
||
| 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,818
|
||
| 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,818
|
|
| 02.10.2014, 19:12 | |
|
2
|
|
| 02.10.2014, 20:39 | |
|
0
|
|
| 02.10.2014, 20:39 | |
|
Помогаю со студенческими работами здесь
20
указатель на экземпляр шаблонного класса Указатель на экземпляр шаблонного класса
Использование в качестве поля класса указатель на объект другого класса Указатель на объект базового класса и адрес объекта производного класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|