Preguntas etiquetadas con 'regla de tres'

La regla de tres (también conocida como Big Three o Big Three) es una regla de oro en C ++, que establece que si una clase define uno de los siguientes, debe definir explícitamente los tres: el destructor, el constructor de copia, el operador de asignación
8
respuestas

¿Cuál es la regla de tres?

¿Qué significa copiar un objeto? ¿Qué es un constructor de copia y una declaración de asignación de copia? ¿Cuándo necesito declararlos yo mismo? ¿Cómo puedo evitar copiar mis objetos?
fijado el 13 de noviembre '10 a las 16:27
8
respuestas

¿Regla de tres se convierte en regla de cinco con C ++ 11?

Entonces, después de ver esta maravillosa conferencia en los enlaces de valores, pensé que cada clase se beneficiaría de un "constructor de reubicación", edite la plantilla <Clase T> MyClass (T otro) y, por supuesto, "el operador de reubicación de destino ...
fijado el 24 de enero '11 a las 4:51 pm
3
respuestas

¿Una excepción a la regla de los tres?

Leí mucho sobre la Regla de Tres de C ++. Muchos juran por esto. Pero cuando se indica una regla, casi siempre incluye la palabra "generalmente", "probablemente" o "posible", lo que indica la presencia de excepciones. No he visto mucha discusión sobre cuáles podrían ser estas exclusivas ...
establecido 21 de marzo 13 a las 23:27
3
respuestas

Asignación segura e idioma "copiar e intercambiar"

Estoy aprendiendo C ++, y recientemente descubrí (aquí en el desbordamiento de pila) sobre el idioma con copia y reemplazo, y tengo algunas preguntas al respecto. Entonces, supongamos que tengo la siguiente clase, usando el idioma con copiar y reemplazar, por ejemplo: clase Foo {p ...
fijado en mayo 06 '11 a las 3:25
5
respuestas

Objeto C ++ Copia Constructor + Puntero

Estoy tratando de aprender los "tres grandes" en C ++. Logré hacer un programa muy simple para los "tres grandes" ... pero no estoy seguro de cómo usar un puntero a un objeto. El siguiente es mi primer intento. Tengo dudas cuando escribí esto ... ...
ambientado el 18 de septiembre '10 a las 8:07
2
respuestas

Entendiendo -WeffС ++

Considere el siguiente programa: #include <string> struct S {S () {} private: void * ptr = nullptr; std :: string str = ""; }; int main () {} Esto, si se compila con -Weffc ++ en GCC 4.7.1, escupirá: advertencia: 'struct S' tiene poi ...
ambientado el 16 de julio de '12 a las 3:50.
3
respuestas

Almacenar objetos en un vector STL es un conjunto mínimo de métodos.

¿Cuál es la "estructura mínima" (métodos necesarios) de un objeto complejo (con datos internos explícitos) que quiero almacenar en un contenedor STL, por ejemplo? <vector>? Para mis suposiciones (un ejemplo de un objeto Doit complejo): #include <...
Se establece el 23 de marzo de 2010 a las 18:30.
2
respuestas

¿Qué pasa con el constructor de copia si la clase contiene un destructor declarado por el usuario?

El estándar en la sección 12.8 / 7 establece: Si la definición de la clase no declara explícitamente una copia del constructor, una se declara implícitamente. Si la definición de clase declara un constructor de reubicación o un operador de transferencia de reubicación, el constructor declarado implícitamente ...
puesta el 01 nov. '14 a las 11:23
0
respuestas

¿Debería la interfaz c ++ obedecer la regla 5?

¿Cuál es la forma correcta de declarar los métodos de creación de instancias al definir una clase de interfaz? Por razones obvias, las clases base abstractas deberían tener un destructor virtual. Sin embargo, la siguiente advertencia de compilación: "InterfaceCla ...
establecido el 22 de abril '18 a las 4:49
5
respuestas

Cuando se asigna a C ++, ¿se destruye el objeto que hemos asignado?

¿Se filtró el siguiente fragmento de código? Si no, ¿dónde se están destruyendo los dos objetos que están construidos en foobar ()? clase B {int * mpI; public: B () {mpI = new int; } ~ B () {borrar mpI; }}; voobar vacío () {b b; b = b (); // cau ...
set 03 dic '10 a las 3:50
1
la respuesta

Regla 3 Desviación del miembro predeterminado en C ++ 11

De acuerdo con la tabla conocida a continuación, la generación automática del constructor predeterminado del compilador de copia y el destino de la copia están desactualizados en C ++ 11, cuando una o más instancias de copia, el constructor de copia y la destrucción ...
establecido el 08 de junio de 17 a 11:47
2
respuestas

¿Existen herramientas de análisis estático que prueben la regla 3 (o la regla 5 C ++ 11)

Actualmente estoy trabajando en un código base construido sobre la base de arena. Hay muchas clases en bibliotecas supuestamente probadas que violan la Regla 3. La mayoría declara un destructor no trivial, pero faltan ...
establecido el 07 de mayo, 13 a las 18:57
3
respuestas

Regla de tres en C ++

Leí que la "Regla de tres", ¿Cuál es la regla de tres?, Se parece a esto: Si necesita declarar explícitamente un destructor, un constructor de copias o asignar una copia de un operador, probablemente deba declarar explícitamente los tres. Mi pregunta es: ...
fijado el 14 de junio de '12 a 1:47
1
la respuesta

Regla cinco y funciones implícitamente remotas

En mi entendimiento, la regla cinco es regla de la regla. Aunque, he visto que el compilador en algunos escenarios puede ocultar funciones, implícitamente. Por ejemplo, al definir move-ctor, se borrará copy / copy ctor. Me gustaría saber si hay una escena ...
set 25 sep. '17 a las 13:27
5
respuestas

¿Rompo la regla de tres?

Recientemente leí, Regla de tres, y me pregunto si la rompo. En mi aplicación GUI, clases como MainFrame, Interface, Circuit, Breadboard, etc. (los nombres de las clases son aproximados), tenga una copia de cada uno de ellos. En su const ...
04 de febrero conjunto '12 a las 10:09