Diskuze: Potrebujem pomoct s kodom :D
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Presnejsie nerozumiem tomuto riadku :
<code>novyZoznam = cislo + zoznam; // ako keby bol tento riadok napisany takto : novyZoznam( cislo.operator+(zoznam));</code>
cislo je premenna typu int, zoznam je objektom triedy Zoznam. Kedze mas implementovany implicitny konstruktor Zoznam(int Cislo) : cislo(Cislo) {}, udeje sa nesledovne:
- na cislo sa aplikuje spominany implicitny konstruktor a vznikne ti
docasny nepomenovany objekt typu Zoznam.
- nad tymto objektom sa zavola clenska metoda operator+(Zoznam) a tato metoda ti
vrati novy vysledny objekt, ktory sa skopiruje do premennej novyZoznam.
>nechapem ako to funguje. Preco musi byt operator+(Zoznam &, Zoznam &) priatelska z triedou Zoznam.
Klucove slovo friend ti dovoluje pristupovat k private a protected atributom danej triedy. V ludskej reci to znamena, ze ne-clenska funkcia Zoznam operator+(Zoznam &, Zoznam &) by nemala pristup na citanie/zapis pre private atribut cislo triedy Zoznam, keby nebola nadefinovana ako friend funkcia v triede Zoznam.
Počkať ale keby to bolo tak ako si hovoril, že sa vytvori docastny objekt a nad nim sa zavola operator+(zoznam) tak by nemalo zmysel vytvarat operator+(Zoznam, Zoznam &) - ale ak ju vymazem tak mi napise na tomto riadku:
novyZoznam = cislo + zoznam;
takze podla mna sa tam nejakym sposobom musi volat operator+(Zoznam, Zoznam&)
moja teoria je taka ze sa tam zavola operator+(Zoznam, Zoznam&) tam sa
cislo premeni na Zoznam, zoznam sa priradi do Zoznam &. A potom sa v tejto
funkcii pomocou operatora+(Zoznam) obydve zoznami prirataju a to co sa vrati z
funkcie operator+(Zoznam) sa vrati a potom priradi do novyZoznam. Mohlo by to
byt takto ? Dufam ze som to napisal zrozumitelne
vychadzal som na zaklade toho komentaru a pohyboval som sa v teoretickej rovine, pretoze ten kod aj tak neskompilujes. Je tam strasne vela chyb.
Skus zacat od zaciatku: definovanie a implementovania triedy Zoznam (atribut, konstruktory, getter/setter), vytvorenie objektu a vypis obsahu atributu na vystup. Samozrejme to treba skompilovat a spustit.
Potom skus pretazit operator+ jednym sposobom. (opat compile+run)
Dalej mozes skusit implementovat pretazenie operatoru+ dalsimi sposobmi. Zakazdym treba kod skompilovat a spustit.
A vzdy si skus ten kod aj zdebugovat. Debugovanie je najlepsi sposob
ucenia/pochopenia, ako veci funguju
Zobrazeno 6 zpráv z 6.