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

Понимание конструкторов в C++: конструкторы по умолчанию, параметризованные и копирования

Конструкторы в C++: полное руководство

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

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

class Wall {
public:
    // Конструктор
    Wall() {
        // код инициализации
    }
};

Конструктор должен:


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

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


Пример 1: конструктор по умолчанию

// Демонстрация конструктора по умолчанию
#include <iostream>
using namespace std;
class Wall {
private:
    double length;
public:
    // Конструктор по умолчанию
    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 конструктор по умолчанию устанавливает length в 5.5 и печатает сообщения.

Примечание: Если класс не имеет явного конструктора, компилятор автоматически генерирует конструктор по умолчанию, который ничего не делает.


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

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


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

// Вычисление площади стены с параметризованным конструктором
#include <iostream>
using namespace std;
class Wall {
private:
    double length;
    double height;
public:
    // Параметризованный конструктор
    Wall(double len, double hgt) {
        length = len;
        height = hgt;
    }
    double calculateArea() {
        return length * height;
    }
};
int main() {
    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

Конструктор присваивает переданные значения length и height, позволяя calculateArea() вычислять площадь стены.


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

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


Пример 3: конструктор копирования

#include <iostream>
using namespace std;
class Wall {
private:
    double length;
    double height;
public:
    // Параметризованный конструктор
    Wall(double len, double hgt) {
        length = len;
        height = hgt;
    }
    // Конструктор копирования
    Wall(Wall &obj) {
        length = obj.length;
        height = obj.height;
    }
    double calculateArea() {
        return length * height;
    }
};
int main() {
    Wall wall1(10.5, 8.6);
    Wall wall2 = wall1; // Вызывает конструктор копирования
    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

Конструктор копирования копирует length и height из wall1 в wall2, обеспечивая идентичное состояние обоих объектов.

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

Язык C

  1. Конструкторы в C#: виды, примеры и продвинутые паттерны
  2. Освоение перегрузки конструкторов в C#
  3. Понимание типов данных C++: основы, модификаторы и лучшие практики
  4. Освоение операторов C++: полное руководство с практическими примерами
  5. Комментарии в C++: лучшие практики для читаемого и поддерживаемого кода
  6. Шаблоны классов в C++: практическое руководство
  7. Освоение конструкторов Java: типы, использование и практические примеры
  8. Конструкторы в Java: инициализация и лучшие практики
  9. Язык программирования C++: обзор и ключевые особенности
  10. Константы и литералы в C++: типы, синтаксис и лучшие практики