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

Co oznacza taki kod? C++

Object Storage Arubacloud
0 głosów
727 wizyt
pytanie zadane 12 lutego 2017 w C i C++ przez kikosiak Obywatel (1,010 p.)
Witam! Pytanie w temacie :)  

 

 

bool operator < (const Punkty &p)const
    {
        return sqrt(pow(a,2)+pow(b,2)) < sqrt(pow(p.a,2)+pow(p.b,2));
    }

2 odpowiedzi

+1 głos
odpowiedź 12 lutego 2017 przez Newtonik Gaduła (3,660 p.)
wybrane 12 lutego 2017 przez kikosiak
 
Najlepsza
To przeciążenie operatora > wykorzystywane przy korzystaniu z klas. Punkty jest to utworzona klasa, (const Punkty & p) jest to obiekt tej klasy który tam prześlesz. Dzięki const nie można zmieniać wartości obiektu. Następnie w definicji funkcji masz funkcje pierwiastka, a w nawiasie potegowanie. Ostatecznie funkcja może zwrócić True lub false. Jeśli nie czytałeś o klasach musisz to koniecznie zrobić a następnie o przeciazaniu operatow, gdyż w miejsce > możesz wstawić np +, -, Czy nawet []. Jak coś pytaj spróbuję pomoc :)
komentarz 12 lutego 2017 przez kikosiak Obywatel (1,010 p.)
Ten operator przeciążenia stosuje się czy sortowaniu?

Albo ogólniej do czego się stosuje te operatory przeciążenia?
komentarz 12 lutego 2017 przez niezalogowany
edycja 12 lutego 2017

Operator przeciążenie nadaje nowe funkcje operatoroom.... Inaczej, bez nich trzeba by pisać kod tak:
 

Wektor A1(...);
Wektor A2(...);

A.wypisz();
B.wypisz();

(A.sprawdz_czy_dluzszy(B)).wypisz();

(dodaj(A, B)).wypisz();

Mnożenie nazw i każda klasa może mieć różna nazwy takich funkcji jakie sobie programista zażyczy. Natomiast przeciążenia mają na celu ograniczyć taką rozmaitość:

Wektor A1(...);
Wektor A2(...);

cout<<A<<endl;
cout<<B<<endl; // gdzies wyzej zrobione przeciazenie strumienia

cout<<A+B<<endl; // gdzies wyzej zrobione przeciazenie znaku dodawania


cout<<(A>B)<<endl;  // gdzies wyzej zrobione przeciazenie znaku wiekszosci

 

komentarz 12 lutego 2017 przez niezalogowany
Czyli przeciążenia mają sprawić, by klasy były bardziej wygodne i intuicyjne w używaniu.
komentarz 12 lutego 2017 przez kikosiak Obywatel (1,010 p.)
Czyli dzięki tym operatorom możemy np. bezpośrednio cout'em wypisać wartości obiektu? Nie trzeba w takim przypadku używać metody tak?
komentarz 12 lutego 2017 przez niezalogowany
Znaczy musisz napisać w klasie metodę z przeciążonym operatorem strumienia. Natomiast w main'ie wygląda to jakbyś po prostu wrzucił jakiś obiekt do strumienia. To co strumień wyrzuci zależy właśnie od tej przeciążonej metody. Tak samo można korzystać ze znaków + - / == = && zamiast funkcji z nazwami.
komentarz 12 lutego 2017 przez kikosiak Obywatel (1,010 p.)
Ok, dzięki wielkie za pomoc :)
+1 głos
odpowiedź 12 lutego 2017 przez Dexterim Dyskutant (8,370 p.)
edycja 12 lutego 2017 przez Dexterim

Zakladam ze Punkty to klasa.

Kod:

bool operator < (const Punkty &p)const

jest to przeciazenie operatora mniejszosci ktory przyjmuje stala referencje do obiektu klasy Punkty i nie zmienia obiektu na ktory jest wywolywany. Zwraca wartosc true lub false

nastepnie kod:

return sqrt(pow(a,2)+pow(b,2)) < sqrt(pow(p.a,2)+pow(p.b,2));

porownuje pierwiastek z dwoch liczb podniesionych do kwadratu gdzie a b to skladowe obiektu na ktora rzecz operator jest wywolywany a p.a p.b to skladowe obiektu p i zwraca true false

komentarz 12 lutego 2017 przez niezalogowany
Nie zwraca pierwiastka. Porównuje odległości punktów od środka układu - która mniejsza, a porównanie dwóch liczb to wartość true/false.
komentarz 12 lutego 2017 przez Dexterim Dyskutant (8,370 p.)
tak tak jak przerabialem to sie popsulo :)
komentarz 12 lutego 2017 przez niezalogowany
Ok to teraz mogę też dać łapkę :)

Podobne pytania

0 głosów
1 odpowiedź 650 wizyt
pytanie zadane 14 stycznia 2017 w C i C++ przez Niebieski_Zerg Użytkownik (610 p.)
+1 głos
2 odpowiedzi 448 wizyt
pytanie zadane 1 października 2016 w C i C++ przez timrh Mądrala (6,030 p.)
0 głosów
2 odpowiedzi 1,045 wizyt
pytanie zadane 18 czerwca 2015 w C i C++ przez Kamil Początkujący (430 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!

...