Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Dobrý deň ↑ MichalAld:,
preťažovanie operátorov poznám, ale tie vstupy nie.
Podľa tej tvojej stránky sa vo vnútri triedy definuje funkcia bez premenných, tak ako to mám v príklade ja a mimo triedy sa definuje ešte raz, ale tento krát s premennou.
Funguje mi to zatiaľ iba na operator=. Ešte sa pokúsim, čo to urobí s inými funkciami.
Ďakujem.
Offline
Dobrý deň ↑ MichalAld:,
operator= som už vyriešil v #3. Zistil som, že pre inkrement a dekrement (operator++ a operator--) má typ v guľatých zátvorkách iný význam.
#include <iostream> struct X { int value1; X(int i) { (*this).value1 = i; } // prefix increment X& operator++() { // actual increment takes place here (*this).value1 = (*this).value1 + 1; return *this; // return new value by reference } // postfix increment X operator++(int) { X old = *this; // copy old value operator++(); // prefix increment return old; // return old value } // prefix decrement X& operator--() { // actual decrement takes place here (* this).value1 = (*this).value1 - 1; return *this; // return new value by reference } // postfix decrement X operator--(int) { X old = *this; // copy old value operator--(); // prefix decrement return old; // return old value } }; int main() { X x1(0), x2(0); std::cout << (++x1).value1 << std::endl; std::cout << (x2++).value1 << std::endl; }
Vráti mi:
1
0
Ale prečo je tam X& operator++() práve pre prefixový inkrement a X operator++(int) práve pre postfixový inkrement to neviem. Skúšal som tam dať namiesto int float, std::string ale s tým mi to nefungovalo.
Offline
Čím víc složitostí daný jazyk obsahuje, tím víc bych se mu vyhýbal.
Offline
Dobrý deň ↑ check_drummer:,
programátori sa delia podľa toho, ktorý jazyk uprednostňujú. Mne prischol jazyk c++. Prvý krát som sa s ním stretol v druháckom predmete na bc. štúdiu a odvtedy v ňom programujem vždy, keď môžem. Samozrejme nepohrdnem ani iným jazykom, ak nie je na výber. Napríklad neurónové siete som sa učil pomocou pythonu.
Offline
No zrovna přetěžování operátorů je taková věc, jejíž zápis moc smysl nedává. Překladač musí nějak poznat, jestli máš na mysli prefixový nebo posfixový increment/decrement, ale proč tam je zrovna to "int", to nevím.
Tak nad tím nepřemýšlej, jestli ti to funguje, tak si zapamatuj, že se to tak dělá a máš to.
Operátory v C++ se dají rozdělit do takových skupin, většina z nich se přetěžuje celkem pochopitelným způsobem, ale některé jsou takové zvláštní.
Offline
Dobrý deň,
zistil som, že tie typy bez premenných fungujú aj v obyčajných funkciách. Moje funkcie síce nič nevracajú ale idú skompilovať:
#include <iostream> void func(int) { }; void func(std::string) { }; int main() { func(1.2); func(1); func("String"); return 0; }
Sumár:
Ak dám do funkcie celé alebo desatinné číslo, zavolá sa mi telo funkcie func(int). Ak dám do funkcie string, zavolá sa mi telo funkcie func(std::string).
Offline