Конструкторы C++: использование аргументов по умолчанию для гибкого создания объектов
Конструктор — это специальная функция-член класса, которая автоматически вызывается при создании объекта. Они используются для инициализации объекта значениями или настройками по умолчанию.
В то время как аргументы по умолчанию в C++ позволяют указывать значения по умолчанию для параметров функций или конструкторов.
Конструктор с аргументами по умолчанию
Конструктор с аргументами по умолчанию — это конструктор, позволяющий создавать объект с использованием опциональных параметров. Где предоставляются значения по умолчанию для параметров, поэтому, когда пользователь не передает никаких значений, используется значение по умолчанию.
Синтаксис
Вот синтаксис для конструктора с аргументами по умолчанию:
class ClassName {
public:
ClassName(parameter_Type parameter_Name = default_Value, parameter_Type2 parameter_Name2 = default_Value2);
};
- Здесь конструктор имеет то же имя, что и класс
- Значения по умолчанию предоставляются для одного или нескольких параметров.
- Если пользователь не передает значение, то используется это значение по умолчанию.
Пример конструктора с аргументами по умолчанию
Вот следующий пример для конструктора с аргументами по умолчанию:
#include <iostream>
using namespace std;
// Функция с аргументом по умолчанию
void printMessage(string message = "Hello, Tutorialspoint Learner") {
cout << message << endl;
}
int main() {
// Вызов функции без аргумента
printMessage(); // Выводит сообщение по умолчанию: "Hello, World!"
// Вызов функции с пользовательским аргументом
printMessage("Hi, there!"); // Выводит пользовательское сообщение: "Hi, there!"
return 0;
}
Вывод
Hello, Tutorialspoint Learner Hi, there!
Пояснение
- Создана функция printMessage() с параметром со значением по умолчанию "Hello, Tutorialspoint Learner".
- Теперь в main() функция printMessage() вызывается без аргументов, поэтому используется аргумент по умолчанию "Hello, Tutorialspoint Learner".
- В то время как в printMessage("Hi, there!") мы явно передали значение "Hi, there!", поэтому это переопределит аргумент по умолчанию.
Конструктор с множественными аргументами по умолчанию
Конструктор с множественными аргументами по умолчанию дает пользователю возможность указывать значения по умолчанию для более чем одного параметра. Это обеспечивает большую гибкость и возможность передавать любую комбинацию аргументов.
Пример
Вот следующий пример для конструктора с множественными аргументами по умолчанию:
#include <iostream>
using namespace std;
class Box {
public:
int length, width, height;
// Конструктор с множественными аргументами по умолчанию
Box(int l = 5, int w = 10, int h = 2) {
// Значения по умолчанию для длины, ширины и высоты
length = l;
width = w;
height = h;
}
void display() {
cout << "Length: " << length << ", Width: " << width << ", Height: " << height << endl;
}
};
int main() {
// Создание объектов с разным числом аргументов
Box box1;
Box box2(15);
Box box3(15, 20);
Box box4(15, 20, 25);
// Отображение значений объектов
box1.display();
box2.display();
box3.display();
box4.display();
return 0;
}
Вывод
Length: 5, Width: 10, Height: 2 Length: 15, Width: 10, Height: 2 Length: 15, Width: 20, Height: 2 Length: 15, Width: 20, Height: 25
Пояснение
- Во-первых, класс box определен с тремя публичными переменными-членами: length и width, где конструктор Box(int l = 5, int w = 10, int h = 2) имеет аргументы по умолчанию для всех трех параметров.
- В объекте Box box1; аргумент не предоставлен, поэтому вызывается конструктор по умолчанию со значениями по умолчанию, в результате "Length: 5, Width: 10, Height: 2".
- В Box box2(15); длина задана как 15, но ширина и высота не предоставлены, поэтому используются значения по умолчанию соответственно.
- В Box box3(15, 20); длина и ширина предоставлены со значениями 15 и 20 соответственно, поэтому они переопределяют значения по умолчанию и дают соответствующий результат.
Ключевые особенности конструкторов с аргументами по умолчанию
Хотя это похоже на обычные функции, это обеспечивает большую гибкость и удобство при создании объектов.
В следующем мы обсудим все его ключевые особенности.
1. Значения по умолчанию для параметров и гибкость в создании объектов
Здесь конструктор может иметь значения по умолчанию для одного или нескольких параметров, которые используются, когда вызывающий не предоставляет аргумент, и позволяет множественные способы создания объекта.
2. Избегание множественных перегрузок конструктора
Вам может потребоваться перегружать конструктор для каждой комбинации аргументов, что сделает код объемным, но с аргументами по умолчанию конструктор можно написать один раз, и он автоматически обработает разные случаи.
3. Порядок аргументов по умолчанию
В случае множественных параметров со значениями по умолчанию, вы не можете пропускать аргументы по умолчанию в середине, как только вы начинаете предоставлять значения по умолчанию справа.
Синтаксис
Box(int l = 1, int w); // Недопустимо: 'w' не имеет значения по умолчанию, но 'l' имеет.
4. Аргументы по умолчанию могут использоваться с константными членами
Если ваш класс имеет const-члены, то аргументы по умолчанию могут быть предоставлены в конструкторе для упрощения инициализации.
Синтаксис
class Box {
public:
const int length, width;
Box(int l = 5, int w = 10) : length(l), width(w) {}
};
Этот конструктор использует аргументы по умолчанию (length = 5 и width = 10) для инициализации константных членов.
Язык C
- Освоение операторов C++: полное руководство с практическими примерами
- Оператор switch-case в C++: синтаксис, применение и практические примеры
- C#: обзор современного объектно-ориентированного языка от Microsoft
- Препроцессор C++: как директивы формируют ваш код
- Мастерство манипуляции строками в C со стандартными библиотечными функциями
- Операторы в C#: полное руководство с примерами
- Массивы в C#: объявление, инициализация и операции
- Как установить компилятор GCC на Windows, macOS и Linux: пошаговое руководство
- Работа с числовыми типами в C++: практическое руководство
- Комментарии в C: пишем понятные и эффективные заметки