|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.08.2017, 16:46 | #1 |
Пользователь
Регистрация: 21.07.2017
Сообщений: 12
|
Какое значение имеет объект класса и т.д.?
здравствуйте, я начал недавно учить программирование, меня немного мучает один вопрос. предположим есть какой-то определенный класс, в main() имеется определение экземпляра класса, например:
Код:
вот например когда имеется определение int ix = 0; понятно что ix конкретно идентифицирует ячейку со своим адресом и значением. может быть под капотом в данной инструкции передается управление конструктору по-умолчанию и тогда данный объект будет иметь все свойства конструктора? а во второй инструкции все свойства функции getSize()? кстати, что происходит в четвертой инструкции? почему, когда я использовал & с операндом в виде имени a, я получил адрес первого члена данных в private? надеюсь понятно спросил, просто мне это важно знать, как это все работает. где об этом можно почитать? спасибо ______________________ Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум. Последний раз редактировалось Alex11223; 05.08.2017 в 16:57. |
05.08.2017, 16:57 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Непонятный вопрос.
Что такое "свойства функции"? myClass& это ссылка на экземпляр.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 05.08.2017 в 17:01. |
05.08.2017, 17:55 | #3 |
Форумчанин
Регистрация: 09.04.2017
Сообщений: 598
|
"какое конкретно значение и адрес имеет a в первой инструкции?"
Если у вас в классе не прописан конструктор, то конструктором по умолчанию объект "а" будет размещен хрен знает по какому адресу и хрен знает с каким значением, и будет дожидаться вашей инициализации. "вот например когда имеется определение int ix = 0; понятно что ix конкретно идентифицирует ячейку со своим адресом и значением." В этом случае вы тоже не назначаете ячейку, не выявляете её (нужны определённые операторы), вы инициализируете переменную ix значением 0, опять таки хрен знает по какому адресу. a.getSize(); Тут надо понимать что делает функция getSize(), каково её тело. myClass& ref = a; ref.getSize(); судя по второй строке, в первой происходит создание объект ref, а во второй он вызывает функцию getSize() Но зачем ссылка? Тем более объекту может быть равен как я понимаю только такой же объект. А для этого столько наворотить надо с перегрузкой "=".... почему, когда я использовал & с операндом в виде имени a, я получил адрес первого члена данных в private? Вы бы класс myClass показали... |
05.08.2017, 18:13 | #4 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
В смысле зачем? Мало ли зачем, в коде ж просто пример использования. нет, ссылка же. Хоть вообще удалите = (сделать private или в С++11 delete).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
05.08.2017, 18:26 | #5 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
|
|
05.08.2017, 18:46 | #6 | |||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Вызовется конструктор по умолчанию (который без параметров). Если никакого конструктора для класса не писали, то он автоматом пустой сгенерируется. Адрес - какой повезёт.
Цитата:
Цитата:
что такое свойства функции? Просто для объекта a вызывается метод getSize. Нет никаких свойств и т.п. Сначала вызвался конструктор для объекта a, который этот объект привёл к какому-то состоянию (а может ничего не сделал). Потом вызвали для объекта метод getSize, который может как-то изменил состояние объекта, а может просто вернул значение, тут нужно смотреть опять чего в этом методе написано. по сути 4 эквивалент 2. Один и тот же метод вызывается для одного и того же объекта. Цитата:
Что как хранится и происходит написано в стандарте языка. Еще в книгах пишут такое. |
|||
06.08.2017, 00:45 | #7 |
Пользователь
Регистрация: 21.07.2017
Сообщений: 12
|
pu4koff,
Спасибо!) Простите, я еще много не пониманию, насчет "свойств" не берите в голову) Задам последний вопрос и все на этом пока что, если вопрос я задам не правильный, еще раз извините. Вот например класс: Код:
|
06.08.2017, 03:28 | #8 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Что значит "по сути"? lvalue, грубо говоря, - это то конкретное место, куда будет сохранён результат операции. В памяти может быть одновременно тысяча экземпляров объекта. И в каждом из них есть своё поле с. Нужно же как-то выделить из тысячи то единственное, которое и примет значение на этот раз
|
06.08.2017, 06:11 | #9 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
В принципе, да.
|
07.08.2017, 05:57 | #10 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
....добавлю, ссылки - это синтаксический сахар языка, для указателей. В ассемблерном коде они заменены на указатели. Т.о. размер самой ссылки = размеру указателя в системе (реально столько памяти выделит), но это "сахар", так что, работая со ссылкой, вы как - бы работаете с оригинальным объектом.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определение типа класса по переменной на объект этого класса при компиляции | phomm | Общие вопросы Delphi | 24 | 08.04.2011 14:11 |
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? | Farrel | Общие вопросы C/C++ | 2 | 13.11.2010 17:37 |
Параметр конструктора класса = объект этого класса | nazavrik | Общие вопросы C/C++ | 6 | 14.02.2010 13:48 |
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? | TwiX | Общие вопросы Delphi | 3 | 15.11.2009 00:54 |
Размер имеет значение | Xenofibrius | Общие вопросы Delphi | 3 | 20.04.2008 23:38 |