РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
690 of 815 menu

Ключевое слово = default

Ключевое слово = default указывает компилятору, что для специальной функции-члена класса нужно сгенерировать стандартную реализацию. Чаще всего его применяют к конструктору по умолчанию, конструктору копирования, конструктору перемещения, оператору присваивания копированием, оператору присваивания перемещением и деструктору. Параметров у самого ключевого слова нет: оно ставится после списка параметров функции вместо тела.

Явное указание = default бывает полезно, когда компилятор перестает автоматически создавать нужную функцию. Например, если в классе объявлен любой конструктор, конструктор по умолчанию уже не генерируется автоматически. Тогда его можно вернуть с помощью = default.

Синтаксис

class ClassName { public: ClassName() = default; ClassName(const ClassName&) = default; ClassName(ClassName&&) = default; ClassName& operator=(const ClassName&) = default; ClassName& operator=(ClassName&&) = default; ~ClassName() = default; };

Пример

Давайте создадим класс Point с обычным конструктором и вернем конструктор по умолчанию через = default:

#include <iostream> using namespace std; class Point { public: int x; int y; Point(int x, int y) : x(x), y(y) {} Point() = default; }; int main() { Point p1; Point p2(1, 2); cout << p1.x << " " << p1.y << endl; cout << p2.x << " " << p2.y << endl; return 0; }

Результат выполнения кода:

0 0 1 2

Пример

Давайте вернем стандартный конструктор копирования и стандартный оператор присваивания копированием для класса MyClass:

#include <iostream> using namespace std; class MyClass { public: int value; MyClass(int value) : value(value) {} MyClass(const MyClass&) = default; MyClass& operator=(const MyClass&) = default; }; int main() { MyClass a(1); MyClass b = a; MyClass c(2); c = a; cout << b.value << endl; cout << c.value << endl; return 0; }

Результат выполнения кода:

1 1

Смотрите также

  • ключевое слово = delete,
    которое запрещает использование функции
  • конструктор класса,
    который создает объект
  • конструктор копирования copy ctor,
    который копирует объект
  • деструктор класса,
    который уничтожает объект
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить