Czy mógłby mi ktoś wytłumaczyć, dlaczego metoda stała przesun1 obiektu Punkt o nazwie p2 dokonuje modyfikacji pól tego obiektu skoro zdefiniowałem i zdeklarowałem ją jako stałą, a z tego co wyczytałem w książce, to nie może ona modyfikować pól tego obiektu, a modyfikuje ( p2.przesun1(p2); ) !
#include <iostream>
class Punkt{
private:
double x, y;
public:
Punkt(double x, double y){
this->x = x;
this->y = y;
}
void przesun1(Punkt& p) const;
void przesun2(Punkt& p);
void przesun3(Punkt p);
double getX(){return x;}
double getY(){return y;}
};
void przesun1(Punkt& p) const{
p.x += x;
p.y += y;
}
void Punkt::przesun2(Punkt& p) {
p.x += x;
p.y += y;
}
void Punkt::przesun3(Punkt p) {
p.x += x;
p.y += y;
}
main(void) {
//const Punkt p1(1,1);
Punkt p2(2,2);
std::cout<<p2.getX()<<' '<<p2.getY()<<std::endl;
p2.przesun1(p2); // według mnie kompilator powinien zgłosić jakiś błąd
std::cout<<p2.getX()<<' '<<p2.getY()<<std::endl;
}