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

Zadanie obiektów i klas

Object Storage Arubacloud
0 głosów
388 wizyt
pytanie zadane 21 czerwca 2018 w C i C++ przez Sic Dyskutant (8,510 p.)

Oto deklaracja klasy:

class Move
{
        private:
                double x, y;
        public:
                Move(double a = 0, double b = 0); // ustawia x na a, y na b
                showmove() const;                            //wyświetla bieżące wartości x i y
                Move add(const Move & m) const;
                //powyższa metoda sumuje x obiektu m i x obiektu wywołującego,
                //y obiektu m i y obiektu wywołującego, tworzy obiekt, inicjalizuje go obliczonymi sumami x i y i zwraca tak zainicjalizowany obiekt
                reset(double a = 0, double b = 0); // ustawia x na a, y na b
};

Czy ktoś mógłby mi wytlumaczyć co to jest 'Move add' i co ona ma właściwie robić  ?

Proszę tylko o podpowiedź, bo nie rozumiem co autor miał na myśli.

1 odpowiedź

+1 głos
odpowiedź 21 czerwca 2018 przez RafalS VIP (122,820 p.)
wybrane 21 czerwca 2018 przez Sic
 
Najlepsza

Na podstawie samej deklaracji mozna sie jedynie domyślać. Jak klasa jest dobrze zapeojektowana to nawet sporo mozna się domyślić. Tutaj akurat nie trzeba bo jest komentarz opisujacy dzialanie metody o ktora pytasz :D pewnie imlementacja wyglada jakos tak:

Move Move::add(const Move& m){
   return Move(x+m.x, y+ m.y);}

Co ciekawe mozesz mozesz sie odowlac do m.x mimo ze x jest private, bo jestesmy w ciele tej samej klasy.

 

komentarz 21 czerwca 2018 przez Sic Dyskutant (8,510 p.)
edycja 21 czerwca 2018 przez Sic
Dziękuję z deklaracją akurat trawiłem, większy problem mam z wywołaniem w tym momencie, przyznaję pierwszy raz spotykam się z taką deklaracją.

W jaki sposób mogę wywołać tą metodę (udało mi się poprawnie utworzyć kod, jednak nie widać wyniku zwracania)?
1
komentarz 21 czerwca 2018 przez RafalS VIP (122,820 p.)

Metoda jak kazda inna, wywolanie:

Move m(2,3), m2(1,20);
Move additionResult = m.add(m2);

 

komentarz 23 czerwca 2018 przez Sic Dyskutant (8,510 p.)
edycja 23 czerwca 2018 przez Sic

Dziękuję.

Ostatnie pytanie dlaczego wartości w programie się w ogóle nie zmieniają ?

#include "class.h"
#include <iostream>

Move::Move(double a, double b) { x = a; y = b; }
void Move::showmove() const { std::cout << "Wartość x: " << x << "\nWartość y: " << y << "\n"; }

Move Move::add(const Move & m) const { return Move(x+m.x, y+m.y); }

void Move::reset(double a, double b) { x = a; y = b; }

int main()
{
        double first= 5.33, second = 6.77;
        Move test_object(first, second), s_object(3.22, 1.88);
        std::cout << "First show!\n";
        test_object.showmove();
        Move additionResult = test_object.add(s_object);  
        std::cout << "\nSecond show!\n"; 
        test_object.showmove();    
        test_object.reset(first, second);
        std::cout << "\nThird show!\n"; 
        test_object.showmove();
        return 0;
}

 

1
komentarz 23 czerwca 2018 przez RafalS VIP (122,820 p.)
Hmm, a widzisz żeby gdzieś były modyfikowane składowe test_object? Metoda add zwraca nowy obiekt. Nie modyfikuje tego na którym została wywołana.

Podobne pytania

0 głosów
1 odpowiedź 624 wizyt
0 głosów
1 odpowiedź 272 wizyt
pytanie zadane 9 listopada 2018 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
0 głosów
1 odpowiedź 123 wizyt
pytanie zadane 23 lutego 2017 w C i C++ przez Nightmare43 Użytkownik (630 p.)

92,555 zapytań

141,402 odpowiedzi

319,542 komentarzy

61,939 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!

...