Правило трёх (C++ программирование)

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Правило трёх (также известное как «Закон Большой Тройки» или «Большая Тройка») — правило в C++, гласящее, что если класс или структура определяет один из следующих методов, то они должны явным образом определить все три метода[1]:

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

Поправка к этому правилу заключается в том, что если используется RAII (от англ. Resource Acquisition Is Initialization), то используемый деструктор может остаться неопределённым (иногда упоминается как «Закон Большой Двойки»)[2].

Так как неявно определённые конструкторы и операторы присваивания просто копируют все члены-данные класса[3], определение явных конструкторов копирования и операторов присваивания копированием необходимо в случаях, когда класс инкапсулирует сложные структуры данных или может поддерживать эксклюзивный доступ к ресурсам.


Ссылки

  1. Bjarne Stroustrup The C++ Programming Language. — 3. — Addison-Wesley. — P. 283-4. — ISBN 978-0201700732
  2. Karlsson, Bjorn; Wilson, Matthew The Law of the Big Two. The C++ Source. Artima (2004-10-01). Проверено 22 января 2008.
  3. The C++ Programming Language. — P. 271.
de:Dreierregel (C++)

en:Rule of three (C++ programming) uk:Правило трьох (C++) zh:三法則 (C++程式設計)

Личные инструменты

Served in 0.172 secs.