Вопросы с тегом 'rule-of-three'

Правило трех (также известное как Закон Большой тройки или Большая тройка) является эмпирическим правилом на С++, который утверждает, что если класс определяет одно из следующего, он должен явно явно определить все три: деструктор, конструктор копирования, оператор присваивания
8
ответов

Что такое правило трех?

Что означает копирование объекта? Что такое конструктор копирования и оператор присваивания копии? Когда мне нужно объявить их самостоятельно? Как я могу предотвратить копирование моих объектов?
задан 13 нояб. '10 в 16:27
8
ответов

Правило-тройка становится Правилом пяти с С++ 11?

Итак, после просмотра этой замечательной лекции на ссылках rvalue, я подумал, что каждый класс выиграет от такого "конструктора перемещения", template<class T> MyClass(T&& other) отредактируйте и, конечно, "оператор назначения перемеще...
задан 24 янв. '11 в 16:51
3
ответов

Исключение из правила трех?

Я много читал о С++ Правиле трех. Многие клянутся этим. Но когда правило указано, оно почти всегда включает слово "обычно", "вероятно" или "возможно", указывая на наличие исключений. Я не видел много дискуссий о том, каковы могут быть эти исключитель...
задан 21 марта '13 в 23:27
3
ответов

Безопасное назначение и идиома "копирование и своп"

Я изучаю С++, и недавно я узнал (здесь, в переполнении стека) об идиоме с копией и заменой, и у меня есть несколько вопросов об этом. Итак, предположим, что у меня есть следующий класс, использующий идиому с копией и заменой, например: class Foo { p...
задан 06 мая '11 в 3:25
5
ответов

Объект С++ Copy Constructor + Указатель

Я пытаюсь изучить "большую тройку" в С++.. Мне удалось сделать очень простую программу для "большой тройки".. но я не уверен, как использовать указатель на объект. Следующим является мой первый попытка. У меня есть сомнения, когда я писал это... ...
задан 18 сент. '10 в 8:07
2
ответов

Понимание -WeffС++

Рассмотрим следующую программу: #include <string> struct S { S (){} private: void *ptr = nullptr; std::string str = ""; }; int main(){} Это, если скомпилировано с -Weffc++ на GCC 4.7.1, выплюнет: warning: 'struct S' has poi...
задан 16 июля '12 в 3:50
3
ответов

Хранение объектов в векторе STL - минимальный набор методов

Что такое "минимальная структура" (необходимые методы) сложного объекта (с явно заданными внутренними данными), который я хочу хранить в контейнере STL, например. <vector>? Для моих предположений (пример сложного объекта Doit): #include <...
задан 23 марта '10 в 18:30
2
ответов

Что с помощью copy-constructor, если класс содержит объявленный пользователем деструктор?

В стандарте в разделе 12.8/7 говорится: Если определение класса явно не объявляет копию конструктор, один объявляется неявно. Если определение класса объявляет конструктор перемещения или оператор переноса перемещения, неявно объявленный конструкто...
задан 01 нояб. '14 в 11:23
0
ответов

Должен ли интерфейс c++ подчиняться правилу 5?

Каков правильный способ объявления методов создания экземпляров при определении класса интерфейса? Для очевидных причин абстрактные базовые классы должны иметь виртуальный деструктор. Тем не менее, следующее предупреждение компиляции: "InterfaceCla...
задан 22 апр. '18 в 4:49
5
ответов

При назначении на С++ ли объект, который мы назначили, разрушается?

Происходит ли утечка следующего фрагмента кода? Если нет, то где разрушаются два объекта, которые строятся в foobar()? class B { int* mpI; public: B() { mpI = new int; } ~B() { delete mpI; } }; void foobar() { B b; b = B(); // cau...
задан 03 дек. '10 в 3:50
1
ответ

Правило 3 Отклонение члена по умолчанию в С++ 11

В соответствии с нижеприведенной широко известной таблицей автоматическая генерация компилятора конструктора копии по умолчанию и назначение копии устарела в С++ 11, когда один или несколько экземпляров копирования, конструктор копирования и деструкт...
задан 08 июня '17 в 11:47
2
ответов

Существуют ли какие-либо инструменты статического анализа, которые проверяют правило 3 (или правило 5 С++ 11)

В настоящее время я работаю над кодовой базой, построенной на основе песка. Существует множество классов в предположительно протестированных библиотеках, которые нарушают "Правило 3". Большинство объявляют нетривиальный деструктор, но отсутствуют ли...
задан 07 мая '13 в 18:57
3
ответов

Правило трех в С++

Я читал, что "Правило трех", Что такое правило трех?, выглядит следующим образом: Если вам нужно явно объявить деструктор, конструктор копирования или присвоение копии     оператора, вам, вероятно, нужно явно объявить все три из них. Мой вопрос: ...
задан 14 июня '12 в 1:47
1
ответ

правило пять и неявно удаленные функции

По моему пониманию, правило пять - правило правила. Хотя, я видел, что компилятор в некоторых сценариях может скрывать функции, неявно. Например, при определении move-ctor 'копирование/копирование ctor' будет удалено. Я хотел бы знать, есть ли сцена...
задан 25 сент. '17 в 13:27
5
ответов

Я нарушаю правило трех?

Недавно я прочитал, Правило трех, и мне интересно, нарушаю ли я его? В моем приложении GUI такие классы, как MainFrame, Interface, Circuit, Breadboard и т.д. (имя класса являются ориентировочными), имеют один экземпляр каждого из них. В своих конст...
задан 04 февр. '12 в 10:09