Что такое перегрузка конструктора в C++: характеристики и типы

Опубликовано: 2021-05-24

C++ — широко используемый в отрасли объектно-ориентированный язык программирования. C++ — пионерский язык программирования в ООП, разработанный Бьерном Страуструпом в AT&T Bell Laboratories в 1979 году . Наиболее часто используемой функцией С++ может быть создание в нем класса. Внутри класса мы можем создавать члены класса – методы и переменные.

Оглавление

Введение

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

В C++ конструкторы по умолчанию не имеют параметров. Они создаются из членов объекта с соответствующими значениями по умолчанию.

Вы можете получить четкое представление о перегрузке концепций, используемых в объектно-ориентированном программировании.

Конструктор

Конструктор (ctor) — это метод программирования, используемый для создания объекта в объектно-ориентированном программировании на основе классов. Новый объект создается вызовом специальной подпрограммы. Это функция-член класса, которая, в свою очередь, инициализирует объекты класса. Этот метод принимает аргументы. Предоставленные параметры используются базовым конструктором и набором переменных-членов.

Характеристики конструктора

Конструктор — это специальная функция-член класса. Она отличается от универсальной функции-члена по следующим причинам:

  • Член конструктора является общедоступным
  • Он имеет то же имя, что и объявление класса.
  • Имя чувствительно к регистру
  • Конструкторы не имеют возвращаемого типа.
  • Конструктор по умолчанию создается неявно.
  • При создании объекта конструктор вызывается автоматически.
  • Конструктор не наследуется неявно.
  • Обычно у него разные правила для модификаторов области действия.

Типы конструкторов

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

Параметризованные конструкторы — это конструкторы, через которые вы можете передавать аргументы. Аргументы инициализируют созданный объект. Создайте параметризованный конструктор, просто добавив к нему параметры, как мы это делаем для любой другой функции. Используйте параметры в теле конструктора для инициализации объекта. Этот тип конструктора обычно используется для перегрузки, а также для инициализации различных элементов данных объектов с разными начальными значениями.

Конструктор копирования — это функция-член, используемая для инициализации объекта с использованием другого объекта того же класса. Компилятор по умолчанию создает конструктор копирования для каждого класса, следуя поэлементному копированию между объектами.

Конструктор на С++

В C++ конструктор вызывается автоматически, когда объект (то есть экземпляр класса) создает его.

Если мы не указываем конструктор, компилятор c++ генерирует для нас конструктор по умолчанию (не требует параметров и имеет имя класса).

Правильно написанный конструктор оставляет результирующий объект в допустимом состоянии.

Перегрузка конструктора

Перегрузка конструктора — это явление, когда конструктор перегружает другой конструктор.

Данный конструктор может быть перегружен, аналогично перегрузке функции.

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

Наличие нескольких конструкторов с разными параметрами помогает выполнять разные задачи в программировании.

Перегрузка конструктора в C++

В С++ в классе есть несколько конструкторов с одним и тем же именем, но с другим списком аргументов. Эта концепция перегрузки конструктора в C++ очень похожа на перегрузку функций.

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

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

Как работает перегрузка конструктора в C++?

Давайте рассмотрим пример, как показано ниже:

Код иллюстрирует пример перегрузки конструктора в C++ .

Есть 2 конструктора класса «вычислить»:

  1. Конструктор по умолчанию (без каких-либо параметров)
  2. Конструктор с тремя параметрами

А в main() создаются два объекта.

1. выход:

Когда он будет создан, он автоматически вызовет конструктор по умолчанию без параметров. Это связано с тем, что при создании объекта параметр не передается. Таким образом, он соответствует определению первого (конструктор по умолчанию). Это присвоит 0 значений всем трем переменным для этого объекта основного класса.

2. исход2:

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

Изучайте онлайн -курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Заключение

Понимание концепции программирования для перегрузки конструктора в C++ является важным навыком для программистов и проектировщиков систем. Студенты, изучающие компьютерные программы и программы, связанные с вычислительной техникой, могут улучшить свои навыки и технические навыки, такие как концепции ООП и оптимизация кода. Ресурсы и база знаний на портале upGrad побуждают таких профессионалов приобретать опыт программирования, чтобы конкурировать на отраслевом рынке. Кроме того, вы получите возможность изучить профессиональные сети и развитие навыков.

Если вам интересно узнать больше о разработке программного обеспечения с полным стеком, ознакомьтесь с программой Executive PG upGrad & IIIT-B по разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов тщательного обучения, более 9 проектов и задания, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Что такое конструкторы в программировании?

Конструкторы в программировании — это функции, основной целью которых является инициализация объекта и выполнение других простых задач. Конструкторы используются для объектно-ориентированного программирования, которое является популярной используемой парадигмой программирования. Таким образом, объектно-ориентированная программа содержит объекты, которые, в свою очередь, имеют свойства, методы и события. Чтобы создать объект, вы должны использовать конструктор, а чтобы иметь возможность использовать объект, вы должны создать его экземпляр.

Что такое перегрузка конструктора?

Перегрузка конструктора означает наличие более одного конструктора с одинаковым именем. Конструкторы — это методы, вызываемые при создании объекта. Вы должны использовать одно и то же имя для всех конструкторов, которое является именем класса. Это делается путем объявления конструктора с другим количеством аргументов. Если нет аргументов для передачи, вызывается конструктор по умолчанию. Если имеется один аргумент, вызывается конструктор, принимающий один аргумент. Если есть два или более аргумента, вызывается конструктор, который принимает ровно два или более аргумента.

Как инициализировать объекты с помощью конструкторов?

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