Пошаговое руководство по С++

С++ ГЛАВНАЯ Введение в С++ С++ Начать Синтаксис С++ Вывод С++ С++ Комментарии Переменные С++ Пользовательский ввод С++ Типы данных С++ Операторы С++ Строки С++ С++ Математика Логические значения С++ Условия С++ Переключатель С++ C++ пока цикл С++ для цикла С++ Перерыв/Продолжение Массивы С++ Ссылки на С++ Указатели С++

Функции С++

Функции С++ Параметры функции С++ Перегрузка функций C++

Классы С++

С++ ООП Классы/объекты С++ Методы класса С++ Конструкторы С++ Спецификаторы доступа C++ Инкапсуляция С++ Наследование С++ Полиморфизм С++ Файлы С++ Исключения С++

С++ Как

Добавить два числа

Примеры С++

Примеры С++ Компилятор С++ Упражнения по С++ Викторина по С++


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


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

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

Чтобы создать конструктор, используйте то же имя, что и класс, за которым следуют круглые скобки ():

Пример

class MyClass {     // The class
  public:           // Access specifier
    MyClass() {     // Constructor
      cout << "Hello World!";
    }
};

int main() {
  MyClass myObj;    // Create an object of MyClass (this will call the constructor)
  return 0;
}

Примечание. Конструктор имеет то же имя, что и класс, это всегда public, и он не имеет возвращаемого значения.


Параметры конструктора

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

В следующем классе есть brand, modelи yearатрибуты, и конструктор с разными параметрами. Внутри конструктора мы устанавливаем атрибуты равными параметрам конструктора ( brand=x, и т.д.). Когда мы вызываем конструктор (путем создания объекта класса), мы передаем конструктору параметры, которые будут устанавливать одинаковые значения соответствующих атрибутов:

Пример

class Car {        // The class
  public:          // Access specifier
    string brand;  // Attribute
    string model;  // Attribute
    int year;      // Attribute
    Car(string x, string y, int z) { // Constructor with parameters
      brand = x;
      model = y;
      year = z;
    }
};

int main() {
  // Create Car objects and call the constructor with different values
  Car carObj1("BMW", "X5", 1999);
  Car carObj2("Ford", "Mustang", 1969);

  // Print values
  cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
  cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
  return 0;
}

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

Пример

class Car {        // The class
  public:          // Access specifier
    string brand;  // Attribute
    string model;  // Attribute
    int year;      // Attribute
    Car(string x, string y, int z); // Constructor declaration
};

// Constructor definition outside the class
Car::Car(string x, string y, int z) {
  brand = x;
  model = y;
  year = z;
}

int main() {
  // Create Car objects and call the constructor with different values
  Car carObj1("BMW", "X5", 1999);
  Car carObj2("Ford", "Mustang", 1969);

  // Print values
  cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
  cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
  return 0;
}