• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Operatory C++ / konstruktor kupiujący

Object Storage Arubacloud
0 głosów
196 wizyt
pytanie zadane 9 grudnia 2015 w C i C++ przez krolkoreipolnocnej Nowicjusz (240 p.)
edycja 9 grudnia 2015 przez krolkoreipolnocnej

Cześć, dopiero uczę się programowania, a więc być może mam bardzo łatwe pytanie, ale jednak nie mogę go sobie wytłumaczyć za pomocą materiałów w internecie i będę wdzięczny za pomoc :)

Mam za zadanie stworzyc klase, ktora bedzie robiła dodawanie, odejmowanie etc. obiektow klasy. Z tym ze musze w tym przypadku skorzystac z konstruktora kopiujacego (pierwszy raz go tutaj używam) oraz operatorow typu (A operator + (&A);) Nie do końca mogę powiązać te wszystkie pojęcia ze sobą i jakby ktoś mógł mnie naprowadzić na właściwą drogę, będę bardzo wdzięczny! Poniżej moje próby..

 

class MojaLiczba {
public:
    MojaLiczba(int liczba);
    ~MojaLiczba();
    int L1;
   MojaLiczba (MojaLiczba &ML);    //konstruktor kopiujacy

    void podziel(MojaLiczba A, MojaLiczba B) {
        value = A.L1 / B.L1;
        cout << "Wynik: " << value << endl;
        }
    
    void dodaj(MojaLiczba A, MojaLiczba B) {
        value = A.L1 + B.L1;
        cout << "Wynik: " << value << endl;
    }
    void pomnoz(MojaLiczba A, MojaLiczba B) {
        value = A.L1 * B.L1;
        cout << "Wynik: " << value << endl;
    }
    void odejmij(MojaLiczba A, MojaLiczba B) {
        value = A.L1 - B.L1;
        cout << "Wynik: " << value << endl;
    }
private:
    int value;
};

 

2 odpowiedzi

0 głosów
odpowiedź 9 grudnia 2015 przez Szykem2 Nałogowiec (29,510 p.)
wybrane 9 grudnia 2015 przez krolkoreipolnocnej
 
Najlepsza

Po pierwsze jeżeli w argumencie przesyłasz jakiś obiekt to należy przesyłać go przez stałą referencję, chyba że masz uzasadniony przypadek, że musi być przez niestałą,

MojaKlasa(const MojaKlasa& obj);

Następnie nie ma sensu robić metod podziel, odejmij itd. bo wywołanie by musiało wyglądać:

obj = obj1.dodaj(obj1, obj2);

zamień te metody na np:

MojaKlasa& operator+(const MojaKlasa& obj){                            
    L1 += obj.L1;                                                //operacja dodawaia
    cout << "dodaje" << endl;
    return *this;                                                //zwracasz obiekt, w ktorym zmieniona jest wartosc L1
}

//teraz wywołanie
obj = obj1 + obj2;

Skoro zmienna value nie jes używana to nie powinno jej być a L1 powina być prywatna. Dobrym zwycajem jest nazywanie zmiennych prywatnych nazwami zaczynającymi się od '_' (chodzi o to, że wiadomo co jest zmienną prywatą a co publiczną).

komentarz 9 grudnia 2015 przez krolkoreipolnocnej Nowicjusz (240 p.)
Bardzo dziękuję!
Teraz mi się w głowie to bardziej poukładało :)
komentarz 9 grudnia 2015 przez Patrycjerz Mędrzec (192,320 p.)
Ciekawi mnie, po co mu ten konstruktor kopiujący?
komentarz 9 grudnia 2015 przez krolkoreipolnocnej Nowicjusz (240 p.)
wiem, że o wiele prościej dałoby się zrobić bez niego, ale jest tutaj tylko i wyłącznie po to aby go zrozumieć i przećwiczyć i okazało się to nie takie łatwe dla mnie)
komentarz 9 grudnia 2015 przez Patrycjerz Mędrzec (192,320 p.)

Polecam przeczytać dogłębnie jakikolwiek kurs C++ (online lub książka) - wszystko ci się natychmiast rozjaśni wink

komentarz 9 grudnia 2015 przez krolkoreipolnocnej Nowicjusz (240 p.)

właśnie jestem w trakcie czytania tutorialu Od zera do gier kodera (Xion), mam nadzieję, że wybrałem właściwą lekturę smiley

0 głosów
odpowiedź 9 grudnia 2015 przez niezalogowany
komentarz 9 grudnia 2015 przez krolkoreipolnocnej Nowicjusz (240 p.)
dziękuję za uwagę, mój błąd :)

Podobne pytania

0 głosów
2 odpowiedzi 133 wizyt
pytanie zadane 13 czerwca 2020 w C i C++ przez RufinB Obywatel (1,830 p.)
0 głosów
1 odpowiedź 119 wizyt
0 głosów
1 odpowiedź 310 wizyt
pytanie zadane 21 stycznia 2016 w C i C++ przez Ziuziek Mądrala (5,140 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...