en "The C++ lenguaje de programación", en la página 265, el autor hace la siguiente declaración:Pregunta sobre significados predefinidos para los operadores
A causa de un accidente histórico, la operadores = (asignación), & (Dirección- de), y (secuencia: §6.2.2) tienen significados predefinidos cuando se aplican a objetos de clase. Estos significados predefinidos pueden hacerse inaccesible para los usuarios en general, haciéndolos privada:
A continuación, se da el siguiente ejemplo:
class X {
private:
void operator=(const X&);
void operator&();
void operator,(const X&);
// ...
};
void f(X a, X b)
{
a = b; // error: operator= private
&a; // error: operator& private
a,b; // error: operator, private
}
No acabo de entender lo qué se refieren estos comentarios de "error" ¿a? ¿Significa eso que no debería definir una función como f
, o que todos los operadores =
, &
y ,
deberían utilizarse de la manera predeterminada, y no es necesario redefinirlos?
Encuentro esta respuesta más clara que la más votada: el punto de los * significados predefinidos * es que están presentes y funcionarán * de manera predeterminada *, y que la única forma de * inhibir * ese comportamiento en C++ 03 es declarándolos 'privados' (C++ 0x agrega la palabra clave' delete') –