c++ - significa - parametros por linea de comandos c
c++ palabra clave explícita para función sin argumentos (1)
Posible duplicado:
¿Qué significa la palabra clave explícita en C ++?
¿Hay alguna razón para usar la palabra clave explicit
para una función que no acepta ningún argumento? ¿Tiene algún efecto? Me pregunto porque acabo de cruzar la línea
explicit char_separator()
cerca del final de la página documentando boost :: char_separator ( http://www.boost.org/doc/libs/1_47_0/libs/tokenizer/char_separator.htm ), pero no se explica más allí.
Explicación de lectura de los miembros :
explicit char_separator(const Char* dropped_delims,
const Char* kept_delims = "",
empty_token_policy empty_tokens = drop_empty_tokens)
explicit char_separator()
La palabra clave explicit
para el primer constructor requiere la creación explícita de objetos de tipo char_separator. ¿Qué significa la palabra clave explícita en C ++? cubre la palabra clave explícita muy bien.
La palabra clave explicit
para el segundo constructor es un ruido y se ignora.
EDITAR
Desde el estándar de C ++:
7.1.2 p6 dice:
El especificador explícito se usará solo en declaraciones de constructores dentro de una declaración de clase; ver 12.3.1.
12.3.1 p2 dice:
Un constructor explícito construye los objetos como constructores no explícitos, pero lo hace solo cuando se usa explícitamente la sintaxis de inicialización directa (8.5) o donde las conversiones (5.2.9, 5.4) se usan explícitamente. Un constructor predeterminado puede ser un constructor explícito; dicho constructor se utilizará para realizar la inicialización predeterminada o la inicialización del valor (8.5). [Ejemplo:
class Z {
public:
explicit Z();
explicit Z(int);
// ...
};
Z a; // OK: default-initialization performed
Z a1 = 1; // error: no implicit conversion
Z a3 = Z(1); // OK: direct initialization syntax used
Z a2(1); // OK: direct initialization syntax used
Z* p = new Z(1); // OK: direct initialization syntax used
Z a4 = (Z)1; // OK: explicit cast used
Z a5 = static_cast<Z>(1); // OK: explicit cast used
—En ejemplo]
Por lo tanto, el constructor predeterminado con la palabra clave explicit
es el mismo que sin esta palabra clave.