Preguntas etiquetadas con 'copiar y cambiar'

El lenguaje de intercambio de copias en C ++ se puede usar para simplificar la implementación de un operador de asignación, utilizando el constructor de copias para crear una copia local y reemplazarla con el objeto actual.
5
respuestas

¿Qué es una copia y cambio de idioma?

¿Qué es este idioma y cuándo debe usarse? ¿Qué problemas resuelve él? ¿Cambia el idioma con C ++ 11? Aunque se mencionó en muchos lugares, no tuvimos preguntas y respuestas especiales sobre "qué", por lo que aquí está. Aquí está incompleto ...
Establecer el 19 de julio de 2010 a las 11:42
2
respuestas

función de intercambio público de amigos

En la excelente respuesta copy-and-swap-modom hay una pieza de código, necesito ayuda: class dumb_array {public: // ... friend void swap (dumb_array first, dumb_array second) // nothrow {using std :: swap; intercambio (abetos ...
fijado el 17 de abril '11 a las 21:35
4
respuestas

¿Por qué algunas personas usan swap para redirigir?

Por ejemplo, stdlibС ++ tiene lo siguiente: unique_lock operator = (unique_lock __u) {if (_M_owns) unlock (); unique_lock (std :: move (__ u)). swap (* this); __u._M_device = 0; __u._M_owns = false; devuelve * esto; } Por qué ...
fijado el 14 de julio, '11 a las 4:03
3
respuestas

¿Qué es la copia y cómo optimiza el lenguaje de copia e intercambio?

Leí Copiar e Intercambiar. Intenté leer algunos enlaces a Copy Elision, pero no pude entender lo que esto significaba. Alguien puede explicar qué es la optimización y, especialmente, qué significa el siguiente texto. Esto no es solo una cuestión de conveniencia, sino un hecho ...
establecido el 27 de enero '10 a las 3:37
3
respuestas

¿Si Idioma con copia y cambio se convierte en Idioma copiar y mover en C ++ 11?

Como se explica en esta respuesta, el lenguaje de copia e intercambio se implementa de la siguiente manera: class MyClass {private: BigClass data; UnmovableClass * dataPtr; public: MyClass (): data (), dataPtr (new UnmovableClass) {} MyClass (con ...
establecido el 03 de junio de 14 a 14:33
2
respuestas

¿Copiar y mover idioma?

Usando Copiar e Intercambiar, podemos implementar fácilmente el destino de la copia con seguridad confiable: T operator = (T otro) {usando std :: swap; swap (* este, otro); devuelve * esto; } Sin embargo, esto requiere que T sea Swappable. Lo que el ...
fijado el 12 de abril '17 a las 14:35
1
la respuesta

¿Cuándo una sobrecarga sigue un enlace (valor l y valor r) preferido para la transmisión por valor?

Vi que dijo que un operador =, escrito para tomar un parámetro del mismo tipo por valor, sirve como operador de asignación de copia y operador de asignación de movimiento en C ++ 11: Foo operator = (Foo f) {swap ( f); volver * ...
establecido el 18 de agosto '13 a las 23:22
3
respuestas

La asignación de movimiento es incompatible con la copia e intercambio estándar

Probando la nueva semántica del movimiento. Acabo de preguntar por los problemas que tuve con el Move Constructor. Pero, como resulta en los comentarios, el problema es que el operador "Asignación de movimiento" y el operador "Asignación estándar" chocan ...
fijado el 07 de noviembre '13 a las 19:41
2
respuestas

¿Por qué std :: vector tiene dos operadores de asignación?

Desde el 2011, tenemos tanto copiando como moviéndonos. Sin embargo, esta respuesta demuestra de manera convincente que las clases de gestión de recursos solo necesitan un operador de asignación.
fijado el 21 de noviembre '15 a las 2:01
2
respuestas

¿Cómo utilizar noexcept en una declaración de asignación con una copia e intercambiar idioma?

El operador de asignación de transiciones a menudo se debe declarar noexcept (es decir, almacenar el tipo en contenedores STL). Pero el lenguaje "copiar e intercambiar" le permite definir operadores de asignación de copia y mover operaciones en un solo fragmento de código. Que hacer
puesta el 17 sep. '13 a las 14:07
2
respuestas

Cuando el idioma de copiar e intercambiar no es compatible

Después de leer sobre el lenguaje de copiar e intercambiar, leí esto, que dice: (2): class_name class_name :: operator = (const class_name (2) (2) Una declaración típica de un operador de asignación de copia cuando ...
fijado el 16 de noviembre '15 a las 2:59 pm
6
respuestas

reutilizar modismos copiar e intercambiar

Estoy tratando de poner el lenguaje de copia e intercambio en una mezcla reutilizable: template <typename Derived> struct copy_and_swap {Derived operator = (Copia derivada) {Derivado * derivado = static_cast <Derivado *> (esto); derivado-> s ...
Set 16 de agosto '11 a las 17:48
3
respuestas

¿La ineficiencia de copiar y cambiar los modismos?

Probé un código que tiene un elemento de datos std :: vector dentro de la clase. La clase es tanto móvil como móvil, y operator = se implementa como se describe aquí usando el lenguaje y y. Si hay dos vectores s, digamos v1 con una gran ...
fijado marzo 03 '13 a las 20:03
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
2
respuestas

¿Cuál es la regla de cuatro (y medio)?

Para el procesamiento correcto de copiar objetos, la regla de oro es la Regla Tres. Con C ++ 11, mover la semántica es una cosa, así que en lugar de eso, la Regla de Cinco. Sin embargo, en las discusiones aquí y en Internet, también vi referencias a la Regla de Chet ...
establecido el 18 de agosto '17 a las 13:17