Рубрики

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

Что такое конструктор?
Конструктор — это функция-член класса, которая инициализирует объекты класса. В C ++ конструктор автоматически вызывается при создании объекта (экземпляра класса). Это специальная функция-член класса.

Чем конструкторы отличаются от обычной функции-члена?

Конструктор отличается от обычных функций следующими способами:

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

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

  1. Конструкторы по умолчанию: Конструктор по умолчанию — это конструктор, который не принимает аргументов. У него нет параметров.

    // Cpp программа для иллюстрации
    // Концепция Конструкторов
    #include <iostream>

    using namespace std;

      

    class construct {

    public:

        int a, b;

      

        // Конструктор по умолчанию

        construct()

        {

            a = 10;

            b = 20;

        }

    };

      

    int main()

    {

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

        // когда объект создан

        construct c;

        cout << "a: " << c.a << endl

             << "b: " << c.b;

        return 1;

    }

    Выход:

    a: 10
    b: 20
    

    Примечание. Даже если мы не определим конструктор явно, компилятор автоматически предоставит конструктор по умолчанию неявно.

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

    // Программа CPP для иллюстрации
    // параметризованные конструкторы
    #include <iostream>

    using namespace std;

      

    class Point {

    private:

        int x, y;

      

    public:

        // Параметризованный конструктор

        Point(int x1, int y1)

        {

            x = x1;

            y = y1;

        }

      

        int getX()

        {

            return x;

        }

        int getY()

        {

            return y;

        }

    };

      

    int main()

    {

        // Конструктор вызван

        Point p1(10, 15);

      

        // Доступ к значениям, назначенным конструктором

        cout << "p1.x = " << p1.getX() << ", p1.y = " << p1.getY();

      

        return 0;

    }

    Выход:

    p1.x = 10, p1.y = 15

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

     Example e = Example(0, 50); // Explicit call
    
     Example e(0, 50);           // Implicit call
    

    Использование параметризованного конструктора:

    1. Он используется для инициализации различных элементов данных разных объектов с разными значениями при их создании.
    2. Используется для перегрузки конструкторов.

    Можем ли мы иметь более одного конструктора в классе?
    Да, это называется перегрузкой конструктора .

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

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

// Иллюстрация
#include "iostream"

using namespace std;

  

class point {

private:

  double x, y;

  

public:

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

  point (double px, double py) {

    x = px, y = py;

  }

};

  

int main(void) {

  // Определяем массив размером 10 & типа точка

  // Эта строка вызовет ошибку

  point a[10];

  

  // Удалить строку выше и программа скомпилируется без ошибок

  point b = point(5, 6);

}

Выход:

Error: point (double px, double py): expects 2 arguments, 0 provided

Статьи по Теме :

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

Рекомендуемые посты:

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

0.00 (0%) 0 votes