in "The ++ linguaggio di programmazione C", a pagina 265, l'autore fa la seguente dichiarazione:domanda su significati predefiniti per gli operatori
A causa di incidente storico, l'operatori = (assegnazione), & (indirizzo- of), e, (sequencing; §6.2.2) hanno significati predefiniti quando applicati a oggetti di classe. Questi significati predefiniti possono essere fatte inaccessibile agli utenti generici facendoli privato:
Poi viene dato il seguente esempio:
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
}
non riesco proprio a capire cosa fanno questi commenti "errore" si riferiscono a? Ciò significa che non dovrei definire una funzione come f
o che tutti gli operatori =
, &
e ,
dovrebbero essere utilizzati secondo il modo predefinito e non è necessario ridefinirli?
Trovo che questa risposta sia più chiara di quella con più upvoted: il punto di * significati predefiniti * è che sono presenti e funzioneranno * di default *, e che l'unico modo di * inibire * quel comportamento in C++ 03 è dichiarandoli 'private' (C++ 0x aggiunge la parola chiave' delete') –