Mam pytanie odnosnie metody odleglosc ktora oblicza "odleglosc" jednego pktu od drugiego. Skoro wywoluje konstruktor domyslny cout << p.odleglosc(punkt()) << '\n'; z parametrami (0,0).To atrybuty prywatne klasy x_,y_ = 0 . Natomiast gdy zaczyna obliczac pierw 2 stopniasqrt((x_-r.x_)(x_-r.x_)+(y_-r.y_)(y_-r.y_) to x_ = 0 i y_ = 0 jak najbardziej poczatek ukladu wspolrzednego dlatego wartosc 0 natomiast podczas "wywolywania konstruktora" nie zmienily sie wartosci prywatne obiektu klasy r czyli r.x_=0 i r.y_=0 (Wiem ze to by nie mialo sensu ale nie rozumiem po prostu gdy wywoluje konstruktor to przeciez zmieniam atrybuty prywatne to dlaczego nie zmienily sie atrybuty prywatne obiektu r ? przeciez dzialam caly czas na obiekcie p klasy ** punkt** ). Czy to jest dlatego ze dla kazdego konstruktora sa tworzone prywatne atrybuty za pomoca wskaznika this ?
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
class punkt{
double x_,y_;
public:
punkt():x_(0),y_(0){};
punkt(double x,double y):x_(x),y_(y){};
double &x(){return x_;}
double &y(){return y_;}
const double &x()const {return x_;}
const double &y()const {return y_;}
double odleglosc(const punkt& r)const {return sqrt((x_-r.x_)*(x_-r.x_)+(y_-r.y_)*(y_-r.y_));}
};
int main()
{
punkt p(2, 3);
cout << p.x() << ' ' << p.y() << '\n';
p.x() = 7;
p.y() = 8;
cout << p.x() << ' ' << p.y() << '\n';
cout << p.odleglosc(punkt()) << '\n';
return 0;
}
Wiem ze strasznie zamotalem!