Witam! Pracuję nad klasą Coords. Będzie to dużo lepszy odpowiednik windowsowego COORD (przynajmniej w zamierzeniu). Mam już konstruktor, parę funkcji, ... (destruktora i operatora kopiującego mi nie trzeba, ponieważ nie operuję na wskaźnikach). I tak w zasadzie mam kilka pytań a propos operatora.
-
Dlaczego argument przyjmuje się jako referencję?
-
Dlaczego typ zwracany jest referencją? (W przykładzie z książki: "ListaPowiazana& ListaPowiazana::operator= [...]") i czy trzeba go zwracać jako referencję? Mam jeden operator który zwraca bool (tak, jest to ==). Musi zwracać bool jak referencję?
-
Dlaczego w tym:
if(this == &inna)
{
//Zwróć obiekt this, aby zachować możliwość łączenia przypisań
return *this;
}
a) sprawdza się obiekt "inna" w postaci referencji?
b) zwraca się obiekt jako wskaźnik? Czy ma to związek z pytaniem drugim? Dodatkowo, piszę teraz operator dodawania. Czy muszę
zwrócić obiekt jako wskaźnik?
Coords& Coords::operator+(const Coords& otherCoords){
Coords tmpCoords(this->x+otherCoords.x,this->y+otherCoords.y);
return tmpCoords;
}
- Dlaczego tu:
friend ostream& operator<< (ostream&,Foo const&);
jest "friend" co to oznacza?