w „C++ język programowania”, na stronie 265, autor czyni następujące oświadczenie:Pytanie o predefiniowane znaczeń dla operatorów
powodu historycznego wypadku, operatorzy = (przelew), & (Address z) oraz (sekwencjonowanie; §6.2.2) mają predefiniowane znaczenia, gdy są stosowane do obiektów klasy. Te predefiniowane znaczeń może być niedostępne dla zwykłych użytkowników, czyniąc je private:
Następnie Poniższy przykład podano:
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
}
nie mogę zupełnie zrozumieć, co te „błąd” komentarze odnoszą do? Czy to oznacza, że nie powinienem zdefiniować funkcji takiej jak f
, czy też wszystkie operatory =
, &
i ,
powinny być używane zgodnie z domyślnym sposobem i czy nie jest konieczne ich ponowne zdefiniowanie?
I ta odpowiedź jest jaśniejsza niż najbardziej upvoted jedno: punkt * * predefiniowanych znaczeń jest to, że są one obecne i działa domyślnie * *, i że jedynym sposobem na hamowanie * * że zachowanie w C++ 03 jest przez deklarowanie ich jako "prywatne" (C++ 0x dodaje słowo kluczowe "delete") –