powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / "Если в классе не объявлены конструкторы, то...
1 сообщений из 51, страница 3 из 3
"Если в классе не объявлены конструкторы, то...
    #38904423
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BleachWhite Owlпропущено...

Ты не видишь разницы между конструктором и инициализатором.
Отсюда и все твои проблемы.

А можна немного поподробнее? ну или ссыль где курить
Конструктор это процедура которая создает объект. Выделяет память, создает вложенные объекты и тп.
Инициализатор это процедура которая наполняет существующий объект начальными значениями.

Чаще всего обе эти операции соединены в одну и располагаются внутри конструктора синтаксически. Но могут быть и разнесены. Тогда конструктор занимается только выделением ресурсов. А инициализатор вызывается либо из самого конструктора, либо отдельно. Это дает дополнительную возможность вызвать "обнуление" объекта в любое время.

Как пример: Нам нужен диалог на экране. В диалоге всегда есть какие-то стартовые тексты в полях ввода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class D : public Dialog {
   D(string name, string address) {
       // setup ui  - здесь будет реальный конструктор диалога
       init(name, address);
  }
  void init(string name, string address) {
     name_text_field.setText(name);
     address_text_field.setText(address);
  }
};


Теперь ты не сможешь создать этот диалог не указав начальные значения name и address. Но при этом сможешь и задать эти поля отдельно, уже после того как конструктор давным-давно отработал.
...
Рейтинг: 0 / 0
1 сообщений из 51, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / "Если в классе не объявлены конструкторы, то...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]