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

Przeciążenie operatora

Ostatnio zmodyfikowano 2018-10-30 08:59
Autor Wiadomość
AmbitnyIdiota
Temat założony przez niniejszego użytkownika
Przeciążenie operatora
» 2018-10-29 22:13:47
 
C/C++
class operator +( class & what )
{
    return class( this->x + what.x );
}

czy może mi ktoś powiedzieć czy dobrze to rozumiem, a jeśli nie to naprowadzić?

to jest to samo jakbym zrobil cos takiego?
C/C++
class operator +( class & wtf, class & what )
{
    return class( wtf.x + what.x );
}
P-172718
pekfos
» 2018-10-29 22:35:52
Pomijając błędy, efekt jest ten sam.
P-172719
mateczek
» 2018-10-30 08:59:46
pierwsza forma to przeładownie które jest składnikiem klasy. Druga forma to przeładowanie na zewnątrz klasy
Słowo class jest słowem kluczowym (przykłady kodu są oderwane od rzeczywistości i raczej tylko poglądowe)

C/C++
#include <iostream>

using namespace std;
class wektor {
    int x;
    int y;
public:
    wektor( int _x, int _y );
    wektor operator +( const wektor & w ); // klasa wie o operatorze dodawania
    void wypisz();
};

wektor::wektor( int _x, int _y ) {
    x = _x;
    y = _y;
}

wektor wektor::operator +( const wektor & w ) {
    return( wektor( w.x + x, w.y + y ) );
}
void wektor::wypisz() {
    cout << this->x << " " << y << endl;
}
int main()
{
    wektor w1( 12, 12 );
    wektor w2( 1, 1 );
    wektor w3 = w1 + w2;
    wektor w4 = w1.operator +( w2 ); // tak to wygląda w rzeczywistości
    w3.wypisz();
    return 0;
}

drugi przypadek

C/C++
#include <iostream>

using namespace std;
class wektor {
public:
    int x; // składniki publiczne albo deklaracja przyjaźni
    int y;
    wektor( int _x, int _y );
    void wypisz();
};
//klasa nic nie musi wiedzieć o operatorze dodawania

wektor::wektor( int _x, int _y ) {
    x = _x;
    y = _y;
}


// opoerator jest samodzielną funkcją
wektor operator +( const wektor & w1, const wektor & w2 ) {
    return( wektor( w1.x + w2.x, w1.y + w2.y ) );
}


//a tego operatora już na dwa sposoby nie przeciąrzysz!!!!
ostream & operator <<( ostream & ss, const wektor & w ) {
    return ss << w.x << " " << w.y;
}

void wektor::wypisz() {
    cout << this->x << " " << y << endl;
}
int main()
{
    wektor w1( 12, 12 );
    wektor w2( 1, 1 );
    cout << w1 + w2 << endl;
    wektor w3 = operator +( w1, w2 ); //tak to wygląda w rzeczywistości
    return 0;
}
P-172721
« 1 »
  Strona 1 z 1