Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
1

Почему я могу использовать this в конструкторе?

04.09.2020, 16:26. Показов 2123. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему я могу использовать this в конструкторе? this - это указатель на объект, объект сконструирован если отработает его конструктор , то почему я могу использовать this в теле конструктора? Т.е. до того как объект будет сконструирован?

Добавлено через 1 минуту
да и вообще откуда он берется в конструкторе, он же неявно передается методам как параметр
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2020, 16:26
Ответы с готовыми решениями:

Почему нельзя в конструкторе использовать параметр по умолчанию, если конструктор не встроен?
То есть честно говоря, вопрос так надо ставить: почему если конструктор встроенный, то можно...

Почему не могу использовать метод?
Создал класс, создал второй класс, где буду тестировать первый. package dlm; public class...

Почему иногда не могу использовать forward declaration
Почему иногда не могу использовать forward declaration? Т.к. сразу вылезает масса ошибок и...

Не пойму почему в процедуре не могу использовать объект
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils,...

4
2528 / 1247 / 461
Регистрация: 08.11.2016
Сообщений: 3,428
04.09.2020, 16:36 2
Лучший ответ Сообщение было отмечено ReYalp как решение

Решение

ReYalp, память под экземпляр класса выделяется не в конструкторе, на момент вызова конструктора объект уже существует и все его поля объявлены
1
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
04.09.2020, 16:42 3
Цитата Сообщение от ReYalp Посмотреть сообщение
да и вообще откуда он берется в конструкторе, он же неявно передается методам как параметр
Конструктор и деструктор это такие-же методы, как любые другие.
1
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.09.2020, 17:03 4
Цитата Сообщение от ReYalp Посмотреть сообщение
Почему я могу использовать this в конструкторе? this - это указатель на объект, объект сконструирован если отработает его конструктор , то почему я могу использовать this в теле конструктора? Т.е. до того как объект будет сконструирован?
RAII - захват ресурса есть инициализация.
суть: сначала всегда выделяем память под объект, и только затем вызываем его конструктор.

итого: к моменту запуска конструктора вся необходимая память уже выделена.
а значит this хранит реальный валидный адрес объекта.
и его можно использовать.

но важно понимать:
пока конструктор не завершил свою работу,
объект ещё не до конца подготовлен к работе.
1
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
04.09.2020, 20:27 5
Del
0
04.09.2020, 20:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.09.2020, 20:27
Помогаю со студенческими работами здесь

Почему в visual studio не могу использовать тип _Bool?
если как я понял C++ полностью работает с кодом C.

Как QGraphicsView использовать в конструкторе
Здравствуйте, Как исправить код, чтобы приложение вывело Hello, World? Обьясните пжлст ...

Как в конструкторе If использовать глобальные переменные
Всем привет. Как в конструкторе If использовать глобальные переменные в виде условия. Например: ...

Как в конструкторе класса вместо коллекции List использовать IEnumerable
Есть класс public class Patient { public Patient() { ...

Почему пропадают элементы в конструкторе формы?
Добрый день. Не могу понять почему пропадают элементы в конструкторе формы. Что делал до этого: У...

Почему в конструкторе QMAinQindow нельзя обрабатывать исключения
Вот написал код конструтора ChildWindow::ChildWindow(QWidget *par) : QMAinWindow(par) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru