Preguntas etiquetadas con 'constructor explícito'

En el prefijo C ++, la palabra clave explícita al constructor evita que el compilador use este constructor para las conversiones implícitas.
11
respuestas

¿Qué significa la palabra clave explícita?

¿Qué significa la palabra clave explícita en C ++?
establecido el 23 de septiembre '08 a las 4:58 pm
11
respuestas

Conversión obsoleta de C ++ de constante de cadena a 'char *'

Tengo una clase con char privada [256]; y para ello, tengo un constructor explícito: explícito myClass (const char * func) {strcpy (str, func); } Llamo a esto como: myClass obj ("ejemplo"); Cuando lo compilo, recibo la siguiente advertencia ...
fijado el 06 de octubre '09 a las 11:45
4
respuestas

Constructor explícito tomando múltiples argumentos

¿Un efecto (útil) tiene un constructor que tiene varios argumentos explícitos? Ejemplo: clase A {pública: explícita A (int b, int c); // ¿Tiene explícito algún efecto (útil)? };
Set 24 de agosto '16 a las 2:29 pm
4
respuestas

¿Qué puede salir mal si los constructores explícitos permiten inicializar una lista de instancias?

En el estándar de C ++, §13.3.1.7 [over.match.list], se indica lo siguiente: En la inicialización de la lista de copias, si el constructor es explícito, la inicialización está mal formada. Es por eso que no podemos hacer algo como esto, por ejemplo: struct foo {// ...
set 06 feb '12 a las 10:49
5
respuestas

¿Por qué se permiten explícitamente los constructores y constructores predeterminados con dos o más parámetros (no el predeterminado)?

Entiendo que los constructores con un único parámetro (no predeterminado) actúan como convertidores implícitos que convierten este tipo de parámetro en un tipo de clase. Sin embargo, explícito puede usarse para calificar a cualquier constructor, sin ...
fijado el 17 de diciembre '10 a las 5:17
5
respuestas

¿Constructor de movimiento explícito?

La palabra clave explícita se recomienda para la mayoría de los constructores a los que se puede llamar con un solo argumento, con la excepción de los constructores de copia. Para los constructores de copias, tiene la capacidad de usar (para prohibir la ausencia ...
set 20 de julio de 2011 a las 10:55
3
respuestas

¿Hay algún inconveniente en aislar explícitamente todos los constructores de C ++?

Varias veces al refactorizar el código, olvidé agregar la palabra clave explícita al agregar un parámetro al constructor sin especificar parámetros o eliminar los parámetros del constructor de parámetros múltiples previamente. Para evitar esto, estoy acostumbrado a ...
fijado el 18 de abril '11 a las 16:14
3
respuestas

C ++ 11: la inicialización en una clase con "= {}" no funciona con un constructor explícito

En C ++ 11, podemos realizar la inicialización en una clase utilizando un "inicializador entre paréntesis o igual" (una palabra de un estándar), por ejemplo: struct Foo {/ * explicit * / Foo (int) {}}; barra de estructura {Foo foo = {42}; }; Pero si no comentamos ex ...
set 01 de octubre '14 a las 11:37
5
respuestas

Evitar transformaciones no deseadas en el constructor.

Consistente con aquí, explícito: especifica constructores y operadores de transformación (comenzando con C ++ 11) que no permiten conversiones implícitas o inicialización de copias. Entonces, ¿son estos dos métodos idénticos? estructura Z {// ... ...
establecido el 19 de abril '16 a las 5:53 pm
2
respuestas

Si uso un constructor explícito, ¿necesito colocar la palabra clave en los archivos .h y .cpp?

En realidad mi pregunta es todo en el título. En cualquier caso: tengo una clase, y uso un constructor explícito: .h class MyClass {public: explícito MyClass (const string s): query (s) {} private: string query; } Requerido o no ...
puesta el 08 de noviembre '08 a las 0:03
3
respuestas

¿Cuál es la diferencia entre asignación explícita e implícita en C ++?

valor int = 5; // este tipo de asignación se denomina una asignación explícita int valor (5); // este tipo de asignación ¿Cuál es la diferencia entre esos, si los hay, y en qué casos se distingue entre asignación explícita e implícita ...
establecido el 17 de junio de 2010 a las 2:18
2
respuestas

¿Cuándo se debe usar la inicialización directa al inicializar una copia?

¿Es solo una preferencia o hay casos específicos donde el otro necesita uno? Me refiero a las siguientes opciones de inicialización T t (e); // inicialización directa T t = e; // copia inicialización
fijado el 27 de noviembre '10 a las 22:59
1
la respuesta

Constructores por defecto explícitos en C ++ 17

En C ++ 17, los tipos de etiquetas vacías en la biblioteca estándar ahora tienen constructores predeterminados que están marcados como explícitos y también = predeterminados. Por ejemplo, std :: piecewise_construct_t ahora se define como struct piecewise_construct_t {explícitamente a trozos ...
establecido el 25 de mayo de 17 a 2:48
2
respuestas

¿Cuál es el argumento del constructor std :: unique_ptr <T> de T *, que es explícito?

Como std :: unique_ptr proporciona una manera conveniente de evitar las fugas de memoria y garantizar la seguridad de las excepciones, es razonable pasarlas, en lugar de punteros en bruto. Por lo tanto, puede desear una función (miembro) con una firma de tipo std :: unique_ptr <some_type> ...
set 28 ago. '15 a las 14:27
1
la respuesta

¿Explícito para constructores N-arios?

En esta presentación: http://qtconference.kdab.com/sites/default/files/slides/mutz-dd-speed-up-your-qt-5-programs-using-c++11.pdf El autor sugiere que Los diseñadores de N-ary se beneficiaron de la versión C ++ de la versión explícita de la palabra clave 11. ¿Qué cambios ...
15 de diciembre se establece. '12 a las 0:29