Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

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

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

В этом руководстве мы узнаем о конструкторе C++ и его типе с помощью справочных примеров.

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

В C++ конструктор имеет то же имя, что и класс, и не имеет возвращаемого типа. Например,

class  Wall {
  public:
    // create a constructor
    Wall() {
      // code
    }
};

Здесь функция Wall() является конструктором класса Wall . Обратите внимание, что конструктор

<час>

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

Конструктор без параметров называется конструктором по умолчанию. . В приведенном выше примере Wall() является конструктором по умолчанию.

<час>

Пример 1. Конструктор C++ по умолчанию

// C++ program to demonstrate the use of default constructor

#include <iostream>
using namespace std;

// declare a class
class  Wall {
  private:
    double length;

  public:
    // default constructor to initialize variable
    Wall() {
      length = 5.5;
      cout << "Creating a wall." << endl;
      cout << "Length = " << length << endl;
    }
};

int main() {
  Wall wall1;
  return 0;
}

Вывод

Creating a Wall
Length = 5.5

Здесь, когда wall1 объект создан, Wall() вызывается конструктор. Это устанавливает длину переменная объекта в 5.5 .

Примечание. Если мы не определили конструктор в нашем классе, то компилятор C++ автоматически создаст конструктор по умолчанию с пустым кодом и без параметров.

<час>

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

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

<час>

Пример 2. Параметризованный конструктор C++

// C++ program to calculate the area of a wall

#include <iostream>
using namespace std;

// declare a class
class Wall {
  private:
    double length;
    double height;

  public:
    // parameterized constructor to initialize variables
    Wall(double len, double hgt) {
      length = len;
      height = hgt;
    }

    double calculateArea() {
      return length * height;
    }
};

int main() {
  // create object and initialize data members
  Wall wall1(10.5, 8.6);
  Wall wall2(8.5, 6.3);

  cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
  cout << "Area of Wall 2: " << wall2.calculateArea();

  return 0;
}

Вывод

Area of Wall 1: 90.3
Area of Wall 2: 53.55

Здесь мы создали параметризованный конструктор Wall() который имеет 2 параметра:double len и double hgt . Значения, содержащиеся в этих параметрах, используются для инициализации переменных-членов length. и высота .

Когда мы создаем объект Wall class мы передаем значения переменных-членов в качестве аргументов. Код для этого:

Wall wall1(10.5, 8.6);
Wall wall2(8.5, 6.3);

Теперь, когда переменные-члены инициализированы, мы можем вычислить площадь стены с помощью calculateArea() функция.

<час>

Конструктор копирования C++

Конструктор копирования в C++ используется для копирования данных одного объекта в другой.

<час>

Пример 3. Конструктор копирования C++

#include <iostream>
using namespace std;

// declare a class
class Wall {
  private:
    double length;
    double height;

  public:

    // initialize variables with parameterized constructor
    Wall(double len, double hgt) {
      length = len;
      height = hgt;
    }

    // copy constructor with a Wall object as parameter
    // copies data of the obj parameter
    Wall(Wall &obj) {
      length = obj.length;
      height = obj.height;
    }

    double calculateArea() {
      return length * height;
    }
};

int main() {
  // create an object of Wall class
  Wall wall1(10.5, 8.6);

  // copy contents of wall1 to wall2
  Wall wall2 = wall1;

  // print areas of wall1 and wall2
  cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
  cout << "Area of Wall 2: " << wall2.calculateArea();

  return 0;
}

Вывод

Area of Wall 1: 90.3
Area of Wall 2: 90.3

В этой программе мы использовали конструктор копирования для копирования содержимого одного объекта из Wall. класс к другому. Код конструктора копирования:

Wall(Wall &obj) {
  length = obj.length;
  height = obj.height;
}

Обратите внимание, что параметр этого конструктора имеет адрес объекта Wall класс.

Затем мы присваиваем значения переменных объекта obj объект в соответствующие переменные объекта, вызывающего конструктор копирования. Вот как копируется содержимое объекта.

В main() , затем мы создаем два объекта wall1 и стена2 а затем скопируйте содержимое wall1 к стене2 :

// copy contents of wall1 to wall2
Wall wall2 = wall1;

Здесь wall2 объект вызывает свой конструктор копирования, передавая адрес wall1 объект в качестве аргумента, т.е. &obj = &wall1 .

Примечание :конструктор в основном используется для инициализации объектов. Они также используются для запуска кода по умолчанию при создании объекта.


Язык C

  1. С# конструктор
  2. Перегрузка конструктора C#
  3. Типы данных С++
  4. Операторы С++
  5. С++ Комментарии
  6. Шаблоны классов С++
  7. Конструкторы Java
  8. Java — Конструкторы
  9. Обзор С++
  10. Константы/литералы С++