/ / Przeciążenie operatora `: =` w C ++ - c ++, przeciążenie operatora

Przeciążenie operatora `: =` w C ++ - c ++, przeciążenie operatora

Dlaczego nie mogę utworzyć lub przeciążać operatora := w mojej klasie w C ++?

Czy istnieje kilka operatorów list, których mogę przeciążyć?

Mogę tylko przeciążać lub tworzyć nowe niestandardowe operatory?

Odpowiedzi:

11 dla odpowiedzi nr 1

Ponieważ taki operator nie istnieje w C ++. Nie możesz rzucić własnych operatorów, ponieważ musisz zmodyfikować gramatykę języka, aby parser je rozpoznał.

Możesz znaleźć listę dostępnych operatorów tutaj lub tutaj (lub jeszcze lepiej, czytając standard, jeśli możesz dostać kopię).

Wreszcie, należy pamiętać, że przeciążanie operatorówtak jak nie ma jutra to błąd, który sprawia, że ​​prawie każdy początkujący C ++ robi; Operatorzy nie są niczym więcej niż funkcjami, i chyba że istnieje bardzo dobry przypadek, który należy wprowadzić w celu przeciążenia operatora przez większość czasu, lepiej jest po prostu napisać zwykłą funkcję dla swojej klasy. std::string robi nie mieć operator* chociaż można argumentować, że jest to wygodne do napisania

string sleepy = string("z") * 40;

1 dla odpowiedzi nr 2

Operatory, których możesz przeciążyć, to: wprowadź opis obrazu tutaj

Być może miałeś na myśli zadanie lub operatora równości.

class Object{

public:

///Overload The Assignment Operator
Object& operator=(const Object& objectIn);

///Overload The Equals Operator
bool operator == (const Object & rhs) const;

protected:
private:
};