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?

¿Fue útil?

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"> .

scroll top