Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] Konstruktor kopiujący, parametryczny, przeciążone operatory

Ostatnio zmodyfikowano 2015-09-09 09:27
Autor Wiadomość
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,
P-137344
pekfos
» 2015-09-08 13:28:38
Niestety nie rozumiem tego co znalazłam na portalu.
A co znalazłaś na portalu?
P-137345
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.
P-137347
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.
P-137348
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-funk​cji-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).
P-137350
pekfos
» 2015-09-08 14:57:47
"Konstruktor kopiujący rozdział w trakcie tworzenia"
To z materiałów archiwalnych, ze starej wersji kursu? Popatrz tu:
» KursyProgramowanie obiektowe, C++ kurs
» Kurs C++Dodatkowe materiały kategoria
P-137351
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.
P-137373
« 1 »
  Strona 1 z 1