Конструкторы классов C ++

C Class Constructors



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

В этой статье мы обсудим все эти типы конструкторов на примерах.







Пример 1

Это иллюстрация конструктора по умолчанию. Как мы знаем, конструкторы по умолчанию создаются автоматически, когда мы создаем объект класса. Это называется неявным созданием. Конструкторы имеют то же имя, что и имя класса. Рассмотрим файл с кодом конструктора на C ++, поскольку мы знаем, что у класса есть два варианта: частный и открытый. Частная часть содержит переменные данных, тогда как общедоступная часть предназначена для функций, извлекаемых любым объектом. Таким образом, конструктор также определен в публичной части.



Целое число()

{

Иксзнак равнопятьдесят;

а такжезнак равнодвадцать;

};

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







После определения конструктора класс закрывается. При входе в основную программу мы будем распечатывать значения с помощью объекта. Объект всегда обращается к конструкторам, поскольку они являются частями класса. Создать объект так просто. Это делается путем введения его с именем класса. В этом примере это целое число. Значение будет получено с помощью точечного метода. т.е. a.x.

Мы можем увидеть вывод исходного кода из терминала в Ubuntu. Подход, используемый для получения вывода, довольно прост. Сначала код компилируется, а затем выполняется. Мы используем компилятор G ++ для процесса компиляции. Как и в случае с C, мы используем GCC.



$ G++ -или filec filec.c

./файлc

-O используется для сохранения вывода в файл.

Пример 2

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

  • Он используется для инициализации различных переменных с разными значениями внутри конструкторов при инициализации.
  • Используется при перегрузке конструктора. Это определено позже в статье.

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

Целое число( intИкс,intа также)

{

Кзнак равноИкс;

Bзнак равноа также;

};

В предыдущем примере переменным внутри конструктора были присвоены значения. Тогда как в этом конструкторе переменным присваиваются переменные, имеющие значение.

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

intgetX()

{

возвращениек;

};

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

Integer v(70,55); {скрытый}

integer vзнак равноцелое число(10,пятнадцать); {явный}

И чтобы отобразить результат, мы вызовем функции, созданные внутри класса, с помощью объекта. то есть v.getx ().

Метод выборки записи такой же, как и ранее.

Пример 3

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

стена(стена&объект)

{

Длиназнак равнообъектдлина;

Ростзнак равнообъектрост;

}

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

Вызов функции скопированного конструктора будет таким.

Стена wall2знак равностена1;

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

Из выходных данных вы можете увидеть, что результат обоих конструкторов одинаков. Это означает, что все данные были успешно скопированы объектом.

Пример 4

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

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

// Конструктор с двумя аргументами

форма(intИкс,intа также)

{

кзнак равноИкс;

бзнак равноа также;

};

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

Форма s;

Форма s2(8);

Форма s3(4,2);

Функция, с помощью которой мы можем отобразить значение, вызывается через тот же созданный объект.

Чтобы просмотреть вывод, мы будем использовать тот же метод командного терминала, скомпилировав и выполнив код, присутствующий в файле.

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

Заключение

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