Rule of three (C++ programming) (original) (raw)

About DBpedia

Die Dreierregel (vor C++11) bzw. Fünferregel (ab C++11) (englisch Rule of three bzw. Rule of five) bezeichnet in der Programmiersprache C++ eine Empfehlung, die besagt, dass in einer Klasse, die eine der folgenden drei bzw. fünf Elementfunktionen definiert, auch die jeweils anderen beiden bzw. vier definiert werden sollten: 1. * Destruktor 2. * Copy-Konstruktor 3. * Copy-Zuweisungsoperator 4. * 5. * Die Regel ist verpflichtender Bestandteil gängiger Konventionen wie z. B. oder AUTOSAR.

Property Value
dbo:abstract Die Dreierregel (vor C++11) bzw. Fünferregel (ab C++11) (englisch Rule of three bzw. Rule of five) bezeichnet in der Programmiersprache C++ eine Empfehlung, die besagt, dass in einer Klasse, die eine der folgenden drei bzw. fünf Elementfunktionen definiert, auch die jeweils anderen beiden bzw. vier definiert werden sollten: 1. * Destruktor 2. * Copy-Konstruktor 3. * Copy-Zuweisungsoperator 4. * 5. * Die Regel ist verpflichtender Bestandteil gängiger Konventionen wie z. B. oder AUTOSAR. (de) The rule of three and rule of five are rules of thumb in C++ for the building of exception-safe code and for formalizing rules on resource management. The rules prescribe how the default members of a class should be used to achieve these goals systematically. (en) La regola del tre è una regola empirica di programmazione in C++ per l'implementazione dei metodi predefiniti di una classe destinata alla gestione di risorse. Formulata originariamente da Marshall Cline nel 1991, afferma che se la classe definisce esplicitamente almeno uno tra distruttore, e operatore di assegnamento, allora tutti e tre i metodi devono essere definiti esplicitamente. C++11 introduce la semantica di movimento, tramite la quale un oggetto può appropriarsi delle risorse di oggetti temporanei, motivo per il quale la regola del tre viene estesa a regola del cinque con l'aggiunta del (move constructor) e dell' (move assignment operator). (it) A regra dos três e a regra dos cinco são regras práticas em C++ para a construção de código seguro contra exceções e para formalizar a gestão de recursos. Isso é feito pela prescrição de como os membros padrões de uma classe devem ser usados para realizar esta tarefa de forma sistemática. (pt) Правило трёх (также известное как «Закон Большой Тройки» или «Большая Тройка») — правило в C++, гласящее, что если класс или структура определяет один из следующих методов, то они должны явным образом определить все три метода: * Деструктор * Конструктор копирования * Оператор присваивания копированием Эти три метода являются , автоматически создаваемыми компилятором в случае отсутствия их явного объявления программистом. Если один из них должен быть определен программистом, то это означает, что версия, сгенерированная компилятором, не удовлетворяет потребностям класса в одном случае и, вероятно, не удовлетворит в остальных случаях. Поправка к этому правилу заключается в том, что если используется RAII (от англ. Resource Acquisition Is Initialization), то используемый деструктор может остаться неопределённым (иногда упоминается как «Закон Большой Двойки»). Так как неявно определённые конструкторы и операторы присваивания просто копируют все члены-данные класса, определение явных конструкторов копирования и операторов присваивания копированием необходимо в случаях, когда класс инкапсулирует сложные структуры данных или может поддерживать эксклюзивный доступ к ресурсам. А также в случаях, когда класс содержит константные данные или ссылки. (ru) 三法則(英語:Rule of Three)以及五法則在C++裡,它是一個以設計的基本原則而制定的定律。 (zh) Правило трьох («Закон великої трійки», «Велика трійка») — практичне правило в C++, яке каже, що якщо в класі визначений один з таких методів, то, найпевніше, в ньому мають бути визначені всі три: * Деструктор (англ. destructor) * Конструктор копіювання (англ. copy constructor) * Оператор присвоєння копіюванням (англ. copy assignment operator) Ці три , можуть автоматично створюватися компілятором у випадку, якщо програміст не визначив їх явно (насправді, це не завжди так, наприклад, якщо один з атрибутів класу константа і, таким чином, вимагає явної ініціалізації). Якщо один з них має бути визначений програмістом, значить версія створена компілятором не підходить, а це означає, що, найпевніше, версії компілятора не підійдуть і для двох інших функцій. Правда, у випадку якщо використовується техніка «виділення ресурсу є ініціалізація» можна покластися на версію деструктора від компілятора (іноді згадують як «Закон великої двійки»). Через те, що неявно згенеровані конструктори і оператори надання значення просто копіюють всі члени даних класу визначення явних конструкторів копіювання і операторів присвоювання необхідно у випадках, коли клас інкапсулює складні структури даних або має зовнішні посилання такі як вказівники, що означає можливість копіювання лише самого вказівника, а не об'єкта на який він вказує. (uk)
dbo:wikiPageID 8715728 (xsd:integer)
dbo:wikiPageLength 6199 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID 1122041676 (xsd:integer)
dbo:wikiPageWikiLink dbr:Rule_of_thumb dbr:Rules_of_thumb dbr:Destructor_(computer_programming) dbr:Self-documenting_code dbc:Computer_programming_folklore dbr:Copy_constructor dbr:Class_(computer_programming) dbr:Move_constructor dbr:Copy_assignment_operator dbr:Copy_constructor_(C++) dbc:Software_engineering_folklore dbr:C++ dbr:C++11 dbr:Resource_management_(computing) dbc:C++ dbc:Articles_with_example_C++_code dbr:C++_classes dbr:Smart_pointer dbr:Move_assignment_operator dbr:Special_member_functions dbr:Resource_acquisition_is_initialization dbr:Class_(computer_science) dbr:Assignment_operator_in_C++ dbr:Destructor_(computer_science) dbr:Declaration_(computer_science) dbr:Exception-safe dbr:Move_semantics dbr:Shallow_copy
dbp:wikiPageUsesTemplate dbt:Citation_needed dbt:Reflist dbt:C++_programming_language
dcterms:subject dbc:Computer_programming_folklore dbc:Software_engineering_folklore dbc:C++ dbc:Articles_with_example_C++_code
gold:hypernym dbr:Rules
rdf:type dbo:AustralianRulesFootballPlayer yago:Abstraction100002137 yago:Cognition100023271 yago:Concept105835747 yago:Content105809192 yago:Guidepost105848541 yago:Idea105833840 yago:PsychologicalFeature100023100 yago:Rule105846054 yago:WikicatProgrammingRulesOfThumb
rdfs:comment Die Dreierregel (vor C++11) bzw. Fünferregel (ab C++11) (englisch Rule of three bzw. Rule of five) bezeichnet in der Programmiersprache C++ eine Empfehlung, die besagt, dass in einer Klasse, die eine der folgenden drei bzw. fünf Elementfunktionen definiert, auch die jeweils anderen beiden bzw. vier definiert werden sollten: 1. * Destruktor 2. * Copy-Konstruktor 3. * Copy-Zuweisungsoperator 4. * 5. * Die Regel ist verpflichtender Bestandteil gängiger Konventionen wie z. B. oder AUTOSAR. (de) The rule of three and rule of five are rules of thumb in C++ for the building of exception-safe code and for formalizing rules on resource management. The rules prescribe how the default members of a class should be used to achieve these goals systematically. (en) A regra dos três e a regra dos cinco são regras práticas em C++ para a construção de código seguro contra exceções e para formalizar a gestão de recursos. Isso é feito pela prescrição de como os membros padrões de uma classe devem ser usados para realizar esta tarefa de forma sistemática. (pt) 三法則(英語:Rule of Three)以及五法則在C++裡,它是一個以設計的基本原則而制定的定律。 (zh) La regola del tre è una regola empirica di programmazione in C++ per l'implementazione dei metodi predefiniti di una classe destinata alla gestione di risorse. Formulata originariamente da Marshall Cline nel 1991, afferma che se la classe definisce esplicitamente almeno uno tra distruttore, e operatore di assegnamento, allora tutti e tre i metodi devono essere definiti esplicitamente. (it) Правило трёх (также известное как «Закон Большой Тройки» или «Большая Тройка») — правило в C++, гласящее, что если класс или структура определяет один из следующих методов, то они должны явным образом определить все три метода: * Деструктор * Конструктор копирования * Оператор присваивания копированием Поправка к этому правилу заключается в том, что если используется RAII (от англ. Resource Acquisition Is Initialization), то используемый деструктор может остаться неопределённым (иногда упоминается как «Закон Большой Двойки»). (ru) Правило трьох («Закон великої трійки», «Велика трійка») — практичне правило в C++, яке каже, що якщо в класі визначений один з таких методів, то, найпевніше, в ньому мають бути визначені всі три: * Деструктор (англ. destructor) * Конструктор копіювання (англ. copy constructor) * Оператор присвоєння копіюванням (англ. copy assignment operator) Правда, у випадку якщо використовується техніка «виділення ресурсу є ініціалізація» можна покластися на версію деструктора від компілятора (іноді згадують як «Закон великої двійки»). (uk)
rdfs:label Dreierregel (C++) (de) Regola del tre (C++) (it) Rule of three (C++ programming) (en) Regra dos três (C++) (pt) Правило трёх (C++) (ru) Правило трьох (C++) (uk) 三法則 (zh)
owl:sameAs freebase:Rule of three (C++ programming) wikidata:Rule of three (C++ programming) dbpedia-bg:Rule of three (C++ programming) dbpedia-de:Rule of three (C++ programming) dbpedia-it:Rule of three (C++ programming) dbpedia-pt:Rule of three (C++ programming) dbpedia-ru:Rule of three (C++ programming) dbpedia-uk:Rule of three (C++ programming) dbpedia-zh:Rule of three (C++ programming) https://global.dbpedia.org/id/Hc4P
prov:wasDerivedFrom wikipedia-en:Rule_of_three_(C++_programming)?oldid=1122041676&ns=0
foaf:isPrimaryTopicOf wikipedia-en:Rule_of_three_(C++_programming)
is dbo:wikiPageDisambiguates of dbr:Rule_of_three
is dbo:wikiPageRedirects of dbr:Rule_of_five_(C++_programming) dbr:Law_of_the_Big_Three
is dbo:wikiPageWikiLink of dbr:Constructor_(object-oriented_programming) dbr:Copy_constructor_(C++) dbr:Big_Five dbr:Assignment_operator_(C++) dbr:Rule_of_three dbr:Outline_of_C++ dbr:Rule_of_five_(C++_programming) dbr:Law_of_the_Big_Three
is foaf:primaryTopic of wikipedia-en:Rule_of_three_(C++_programming)