palabra clave explícita sobre el constructor multi-arg?
Pregunta
Recientemente me encontré con alguna clase de aspecto extraño que tenía tres constructores:
class Class
{
public:
explicit Class(int );
Class(AnotherClass );
explicit Class(YetAnotherClass, AnotherClass );
// ...
}
Esto no tiene mucho sentido para mí - pensé que la palabra clave explícita es la de proteger la construcción elegido compilador de un tipo extranjera
.¿Está permitido? Si es ella, ¿qué significa?
Solución
En 11 constructores multi-parámetro C ++ se puede convertir implícitamente con inicialización aparato ortopédico.
Sin embargo, antes C ++ 11 explicit
sólo se aplica a los constructores-solo argumento. Para los constructores-argumento múltiple, que fue ignorado y rel="noreferrer"> .
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow