mag Temat założony przez niniejszego użytkownika |
[c++] Konstruktor kopiujący, parametryczny, przeciążone operatory » 2015-09-08 13:22:43 Witam,
Chciałabym poprosić Was o pomoc w zrozumieniu tych zagadnień, czy jest ktoś wstanie mi przedstawić przykład i wyjaśnić na czym polega? Niestety nie rozumiem tego co znalazłam na portalu.
Pozdrawiam, |
|
pekfos |
» 2015-09-08 13:28:38 Niestety nie rozumiem tego co znalazłam na portalu. |
A co znalazłaś na portalu? |
|
mag Temat założony przez niniejszego użytkownika |
» 2015-09-08 13:43:47 "Konstruktor kopiujący rozdział w trakcie tworzenia" Przykład analizowałam kilkakrotnie i nie rozumiem, gdzie występuje ten konstruktor.
Jeżeli chodzi o przeciążone...
class Vector { public: double x; double y; Vector() { this->x = 0; this->y = 0; } Vector( double x, double y ) { this->x = x; this->y = y; } }
Nie wiem, czy dobrze rozumiem, czyli jeżeli mamy ogólny przykład: zwracany_typ operator@(typ_prawego_operandu &nazwa_prawego_operandu); Zwracany typ - Vector operator - ! // to ta negacja typ prawego operandu to this->x // bo jest wcześniej napisany niż y? typ lewego operandu to this->y
to Vector operator !() { return Vector( - this->x, - this->y ); }
A dlaczego tutaj nie ma tego znaczka "&" ? Tego nie rozumiem.
Czyli jeżeli chcemy z tego wyżej zrobić "+", "-" i korzystać z tego co wyżej, to będzie to wyglądało
Vector operator +() { return Vector(- this->x, - this->y); }
a jeżeli minus:
Vector operator -() { return Vector (- this-> x, -this->y); }
to o to chodzi ?
A parametryczny konstruktor to ten "normalny"? Po prostu nie wiem, czy jest inaczej nazwany, a o ten sam chodzi.
|
|
mag Temat założony przez niniejszego użytkownika |
» 2015-09-08 13:48:04 A jeszcze
bool operator ==( const Vector & v ) // skąd się wzięło "const Vector & v" we wcześniejszych przykładach tego nie było. { if(( this->x == v.x ) &&( this->y == v.y ) ) return true; else return false; }
Przepraszam, jak zadaje zbyt proste/ banalne pytania, ale ja programuje dopiero od niedawna, nie wszystko rozumiem dlatego się pytam. |
|
Monika90 |
» 2015-09-08 14:57:32 bool operator ==( const Vector & v ) // skąd się wzięło "const Vector & v" we wcześniejszych przykładach tego nie było.
|
To jest przekazywanie przez referencję, co jest opisane tu http://cpp0x.pl/kursy/Kurs-C++/Poziom-3/Przekazywanie-argumentow-funkcji-przez-referencje/356, a wcześniej tego nie było, bo wczesniej były operatory jednoargumentowe. Sądzę że forum nie jest najlepszym miejscem do wyjaśniania takich rzeczy. Najlepiej zaopatrz się w książkę, np. Koenig and Moo - Accelerated C++ (po polsku: C++ Potęga języka). |
|
pekfos |
» 2015-09-08 14:57:47 |
|
mag Temat założony przez niniejszego użytkownika |
» 2015-09-09 09:27:36 Chętnie z korzystam z porad, mam nadzieję, że ta książka wyjaśni mi wiele wątpliwości. Zajrzałam do tych materiałów(może te wcześniejsze rzeczywiście były archiwalne znalezione przeze mnie), które mi przesłał pekfoks znalazłam tam odpowiedzi na nurtujące mnie pytania. Dziękuję za pomoc. |
|
« 1 » |