matematykaszkolna.pl
Przeciążanie operatorów Benny: Powiedzmy, że mam klasę zespolona. Jaki jest sens robienia funkcji wypisz skoro można przeciążyć operator <<?
4 sty 21:40
Dziadek Mróz: Bo funkcję wypisz używają początkowi programiści podczas nauki, a przeciążanie operatorów jest jakieś 5 działów dalej w OOP
4 sty 22:40
Benny: Mam jeszcze pytanie odnośnie kawałka kodu. friend istream&operator>>(istream &, zespolona &); friend ostream&operator<<(ostream &, zespolona); Czemu w jednym jest & a w drugim nie? Co to oznacza?
4 sty 22:44
Mariusz: Poczytaj o referencji albo poczekaj na Dziadka
5 sty 14:08
jc: A w javie właściwie nie ma przeciążania, niejawnej konwersji i być może kilku podobnych rzeczy i jakoś programiści sobie radzą.
5 sty 14:30
Benny: Nie jestem programistą
5 sty 14:34
Metis: A powinnieneś ! emotka
5 sty 14:38
Benny: Jakoś mnie to nie kręci
5 sty 14:53
KKrzysiek: Metis, masz jakieś ksiązki do algebry?
5 sty 14:55
Mariusz: Niedawno zainteresowałeś się strukturami danych Myślę że możesz zacząć od listy z funkcjami do obsługi stosu i kolejki W Pascalu umieszczasz wszystko w jednym pliku uses nazwa; interface {dyrektywy kompilatora, deklaracje modułów pomocniczych deklaracje stałych , definicje typów, nagłówki procedur i funkcji} implementation {procedury i funkcje których nagłówki nie zostały wymienione w części interface nagłówki funkcji i procedur razem z ciałami } begin end. W C część interface umieszczasz w pliku nagłówkowym *.h a część implementation oraz główny blok kodu w oddzielnych plikach *.c
5 sty 15:12
Dziadek Mróz: Zgodnie z zasadami i logiką powinno być: tu jest const bo wysyłasz stały obiekt do strumienia vvvv friend std::ostream &operator <<(std::ostream &os, const zespolona &z); tu nie ma const bo zmieniasz obiekt przez strumień vvvv friend std::istream &operator >>(std::istream &is, zespolona &z); Klasy iostream nie posiadają konstruktora kopiującego, więc należy zwrócić kopię w referencji. std::cout zwraca referencję do std::ostream: std::cout << 1 << 2 << 3; to samo: ((std::cout << 1) << 2) << 3; ((coś od std::cout) << 2) << 3 ... (coś od std::cout) << 3 ... coś od std::cout Twój zapis zwróci błąd bo kompilator będzie szukał konstruktora kopiującego dla iostream.
5 sty 23:01
Benny: Za dużo z tego nie rozumiem.emotka Kolejne pytanie: W pewnej klasie określam sobie modyfikator praw dostępu jako private i pod tym definiuje sobie zmienne float. Jaki jest ich zasięg w programie?
6 sty 13:56
Benny: Tylko w danej klasie mogę z nich korzystać, tak?
6 sty 13:57
Mariusz: Z prywatnych tak Spróbuj się pobawić kodem Napisz sobie jakąś klasę a następnie klasę która dziedziczy po tej klasie i jeszcze jedną klasę która nie dziedziczy po pierwszej klasie i przetestuj działanie modyfikatorów private, protected i public
6 sty 14:09
Dziadek Mróz: Atrybuty prywatne są dostępne w danej klasie i w klasach zaprzyjaźnionych
6 sty 14:16
Dziadek Mróz: Atrybuty chronione są dostępne również w klasach dziedziczonych, publiczne są dostępne w całym programie
6 sty 14:17