13.1.5. Использование спецификатора = default

Используя спецификатор = default, можно явно указать компилятору на необходимость создать синтезируемые версии функций-членов управления копированием (см. раздел 7.1.4):

class Sales_data {

public:

 // управление копированием; версии по умолчанию

 Sales_data() = default;

 Sales_data(const Sales_data&) = default;

 Sales_data& operator=(const Sales_data &);

 ~Sales_data() = default;

 // другие члены как прежде

};

Sales_data& Sales_data::operator=(const Sales_data&) = default;

Когда в объявлении функции-члена в теле класса использован спецификатор = default, синтезируемая функция неявно становится встраиваемой (как и любая другая функция-член, определенная в теле класса). Если синтезируемая функция-член класса не должна быть встраиваемой функцией, можно добавить часть = default в ее определение, как это было сделано в определении оператора присвоения копии.

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

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК