Si defino un operador de asignación propia, que tiene una firma diferente que el operador de asignación por defecto normalmente generada:¿Cuándo se vuelve inaccesible el operador de asignación predeterminado de C++?
struct B;
struct A {
void operator = (const B& b) {
// assign something
}
};
hace el operador de asignación por defecto, en este caso operator = (A&)
(o similar, corrígeme si mal) convertirse en indefinido/inaccesible?
AFAIK esto es cierto para el constructor predeterminado, que no existe, si definimos algún otro constructor. Pero realmente no estoy seguro si este es el caso para los otros valores predeterminados "mágicos".
La razón por la que pregunto: quiero evitar que el constructor de copia predeterminado se llame accidentalmente mediante una conversión de tipo implícita. Si no existe, nunca podría suceder.
¡Gracias por la referencia estándar! Eso realmente dice algo más que mis ejemplos. – xtofl
Tienes razón. Eliminaré mi respuesta. –
@Neil, se preguntó de qué uso = predeterminado podría ser. Una es ser explícito en lo que está disponible, otra es cambiar la accesibilidad, una tercera es que permite hacer que la implementación no esté en línea y al mismo tiempo asegurar que la evolución de la clase no la rompa. Otra justificación es que la característica es más amplia que el alcance de la asignación y no había ningún incentivo para hacer una excepción, incluso si no fuera de utilidad. – AProgrammer