Конструкторы по умолчанию в C++

Опубликовано: 15 Сентября, 2022

Конструктор без каких-либо аргументов или со значением по умолчанию для каждого аргумента называется конструктором по умолчанию .

Каково значение конструктора по умолчанию?

Они используются для создания объектов, не имеющих определенного начального значения.

Предоставляется ли конструктор по умолчанию автоматически?

Если в классе явно не объявлены конструкторы, автоматически предоставляется конструктор по умолчанию.

Может ли конструктор по умолчанию содержать аргумент по умолчанию?

Да, конструктор может содержать аргумент по умолчанию со значениями по умолчанию.

Будет ли какой-либо код, вставленный компилятором в реализованный пользователем конструктор по умолчанию за кулисами?

Компилятор неявно объявит конструктор по умолчанию, если он не предоставлен программистом, и определит его при необходимости. Определенный компилятором конструктор по умолчанию требуется для определенной инициализации внутренних компонентов класса. Он не будет касаться членов данных или простых старых типов данных (агрегатов, таких как массив, структуры и т. д.). Однако компилятор генерирует код для конструктора по умолчанию в зависимости от ситуации.

Рассмотрим класс, производный от другого класса с конструктором по умолчанию, или класс, содержащий другой объект класса с конструктором по умолчанию. Компилятору необходимо вставить код для вызова конструкторов по умолчанию базового класса/встроенного объекта.

Существуют разные сценарии, в которых компилятору необходимо вставить код, чтобы обеспечить некоторую необходимую инициализацию в соответствии с требованиями языка. Мы будем иметь их в следующих сообщениях. Наша цель — знать о внутренностях C++, а не использовать их неправильно.

Объяснение: здесь у нас есть конструктор с двумя параметрами — простой параметр и один параметр по умолчанию. Теперь есть два способа вызова этого конструктора:

  1. Во-первых, мы можем присвоить значения обоим аргументам, и эти значения будут переданы конструктору, а аргумент по умолчанию x со значением 0 будет переопределен значением, переданным при вызове (в данном случае 20). Следовательно, код выдаст результат 30 (т.е. сумма = а+х, т.е. 10+20= 30).
  2. Второй способ — не передавать какое-либо значение для параметра по умолчанию. Если вы сделаете это, x примет значение по умолчанию 0 в качестве окончательного значения и рассчитает сумму 5 (т.е. сумма = a+x, т.е. 5+0=5)

    Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.