Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/64: Рейтинг темы: голосов - 64, средняя оценка - 4.80
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712

Инициализация ссылки

03.05.2017, 08:31. Показов 12667. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех. Есть класс, который обрабатывает объект. Объект передается в класс по ссылке через конструктор этого класса. В классе есть ссылка на объект. Как ее инициализировать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
class MyClass
{
 int &Object; // Ссылка на объект обработки
 
 public:
 MyClass(int &Obj);
}
 
MyClass::MyClass(int &Obj)
{
 /* Как тут инициализировать Object? */
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.05.2017, 08:31
Ответы с готовыми решениями:

Инициализация структуры
Доброе время суток всем! Кто-нибудь может подсказать, как инициализировать переменную типа структуры, нечто вроде следующего: ...

Инициализация структуры
Не удается инициализировать структуру, которая имеет тип AnsiString нижеприведенным способом в C++Builder 6. Этот код находится не в...

Инициализация структуры
Всем привет! Подскажите плиз, как инициализировать структуру с переменной AnsiString struct str{ AnsiString ttt; }; str...

25
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
13.05.2017, 19:37  [ТС]
Студворк — интернет-сервис помощи студентам
Avazart, создал примитивный пример.
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 class MyClass
  {
   public:
   int _x;
  };
 
 // Конструктор в классе не определен, тогда что обнуляет _x?
 MyClass *mc = new MyClass();
 int k = mc->_x; // Тут _x = 0
}
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2017, 20:20
Цитата Сообщение от d7d1cd Посмотреть сообщение
// Конструктор в классе не определен, тогда что обнуляет _x?
Перечитайте мои посты внимательно, в режиме brain=on и добавьте конструктор с параметром.
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
14.05.2017, 13:08  [ТС]
Avazart, в этой статье прочитал следующее:
В C++ и Java, если нет явным образом определённых конструкторов в классе, то компилятор использует конструктор по умолчанию, определённый неявным способом, который аналогичен «чистому» конструктору по умолчанию. Если программист явно указал только конструктор с параметрами, то компилятор не будет создавать конструктор по умолчанию.
Признаю, я был не прав, говоря, что при создании "самописного" конструктора в классе, компилятор все равно будет создавать конструктор по-умолчанию. Его не будет. Однако, если в классе не создать ни одного конструктора, то компилятор создаст конструктор по-умолчанию.
Экспериментируя с тестовым проектом выяснил, что если объект POD типа создается оператором new, то он обнулен. Возвращаюсь к своему вопросу: что обнуляет память при этом?

Добавлено через 35 минут
volvo, попробовал воспроизвести Ваш пример, о котором Вы писали:
для начала поле Object будет проинициализировано нулем, и только потом, в теле конструктора, ему присвоится значение Obj...
Однако поле Object в теле конструктора перед присвоением значения Obj хранит не 0...
C++
1
2
3
4
5
6
7
8
9
10
11
12
class MyClass
{
 int Object;
 
 public:
 MyClass(int Obj);
}
 
MyClass::MyClass(int Obj)
{
  Object = Obj;
}
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.05.2017, 13:17
Может все таки книгу почитаете? Не ?
Глобальные и статические локальные переменные инициализируются нулем, если не указано инициализационное значение. Неинициализирующиеся нестатические локальные и регистровые переменные будут иметь неопределенное значение.
http://www.c-cpp.ru/books/inic... peremennyh

Добавлено через 1 минуту
Цитата Сообщение от d7d1cd Посмотреть сообщение
Однако поле Object в теле конструктора перед присвоением значения Obj хранит не 0...
А где у вас список инициализации?
1
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
14.05.2017, 17:13  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
А где у вас список инициализации?
Перечитайте внимательно пост volvo. В его примере нет списка инициализации.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.05.2017, 17:31
Как я понял он имел виду отличие инициализации от присвоения.

Список инициализации - это инициализация(да не ужели!), то что у теле конструктора - присвоение.

Добавлено через 3 минуты
Отличие объявления, определения и инициализации
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2017, 17:31

Инициализация вектора
Приветствую всех. Есть вектор std::vector. При изменении его размерности функцией resize что содержат элементы вектора? Мусор или...

Инициализация указателей
Проблема: Объявил указатель TMatrix *M в секции private: класса, напр., MyClass, а инициализировал их в функции, объявленной в секции...

Инициализация констант в Builder 6
Доброго дня, подскажите, пожалуйста, как объявить и инициализировать в классе константу. Имеется SDI приложение, в классе формы которого...

Инициализация графического режима!
Кто может - помогите!!!! На экране сообщение: ...Device driver file not found (EGAVGA.BGI)... Но в папке BGI он есть. Папка с...

Инициализация объектов данными из бд
Здравствуйте, делаю программу для навигации внутри помещения, в базе на ms sql server есть таблица с 3 столбцами: старт, финиш и...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru