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 1Ponieważ 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:
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:
};