C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19
|
|
- Danuše Křížová
- před 6 lety
- Počet zobrazení:
Transkript
1 C++ přetěžování funkcí a operátorů 1
2 Přetěžování funkcí jazyk C++ umožňuje napsat více funkcí se stejným názvem, těmto funkcím říkáme přetížené přetížené funkce se musí odlišovat typem nebo počtem parametrů, případně obojím (nestačí odlišení typem návratové hodnoty) // funkce pro výpis pole proměnných int void VypisPole(int pole[], int pocetprvku) for (int i = 0; i < pocetprvku; i++) cout << pole[i] << ' '; cout << endl; ; // další funkce pro výpis polí jiných typů pojmenujeme stejně void VypisPole(double pole[], int pocetprvku); void VypisPole(float pole[], int pocetprvku); void VypisPole(long pole[], int pocetprvku); nemusíme vymýšlet pro každý datový typ jiný název funkce, která vypíše pole pro všechny typy máme stejně pojmenovanou funkci VypisPole kompilátor podle seznamu parametrů pozná, kterou má zavolat 2
3 Přetěžování členských funkcí třídy příklad: třída obdélník má (kromě přístupových funkcí) metodu Nakresli class obdelnik public: // pristupové funkce int VratVysku() const; void NastavVysku(int v); int VratSirku() const; void NastavSirku(int s); // ostatní funkce void Nakresli() const; private: int vyska, sirka; ; funkce Nakresli vykreslí na monitor obdélník z hvězdiček: void obdelnik::nakresli() const for (int i = 0; i < vyska; i++) for (int j = 0; j < sirka; j++) std::cout << '*'; std::cout << std::endl; pokud chceme, aby se obdélník uměl nakreslit i pomocí jiného znaku než '*', přetížíme funkci Nakresli, tj. vytvoříme ještě jednu její variantu, která bude přebírat jako parametr znak, jenž má být při kreslení použit 3
4 Přetěžování členských funkcí třídy class obdelnik public: // pristupové funkce int VratVysku() const; void NastavVysku(int v); int VratSirku() const; void NastavSirku(int s); // ostatní funkce void Nakresli() const; void Nakresli(char z) const; private: int vyska, sirka; ; void obdelnik::nakresli() const Nakresli('*'); void obdelnik::nakresli(char z) const for (int i = 0; i < vyska; i++) for (int j = 0; j < sirka; j++) std::cout << z; std::cout << std::endl; třída má teď dvě funkce Nakresli, první (bez parametrů) kreslí obdélník z hvězdiček, druhá použije ke kreslení znak předaný jako parametr v definici funkce bez parametrů je pouze zavolána varianta s parametrem, které je předán defaultní znak hvězdičky to proto, abychom neopakovali stejný kód ve více funkcích i když bychom mohli funkci Nakresli() vypsat celou (kompilátoru by to nevadilo), je zvykem vyvarovat se opakování stejného kódu 4
5 Přetěžování členských funkcí třídy použití obdélníka a jeho přetížených funkcí: int main() using namespace std; obdelnik O; O.NastavVysku(5); O.NastavSirku(10); cout << "vyska: " << O.VratVysku() << endl; cout << "sirka: " << O.VratSirku() << endl; cout << endl; O.Nakresli(); cout << endl; O.Nakresli('#'); return 0; 5
6 Přetěžování konstruktorů třídy konstruktor lze přetížit stejně jako kteroukoliv jinou metodu, jedná se o silnou vlastnost C++ Pravidla: 1. pokud nenapíšeme ke třídě žádný konstruktor, kompilátor poskytne konstruktor bez parametrů (tzv. výchozí), který ale s datovými položkami třídy nic nedělá 2. pokud napíšeme jakýkoliv konstruktor, kompilátor neposkytne žádný chceme-li, abychom mohli ihned při vytvoření nastavit výšku a šířku obdélníka, napíšeme konstruktor přebírající jako parametry dvě celá čísla: // deklarace konstruktoru obdelnik(int v, int s); // definice konstruktoru obdelnik::obdelnik(int v, int s) vyska = v; sirka = s; použití konstruktoru v programu: obdelnik O(5, 10); O.Nakresli(); 6
7 Přetěžování konstruktorů třídy protože jsme ale napsali vlastní konstruktor, kompilátor neposkytl žádný, není tedy možné napsat obdelnik O; protože třída aktuálně nemá žádný výchozí konstruktor výchozí konstruktory jsou potřeba pokud např. chceme vytvořit pole objektů: obdelnik pole[10]; pokud není k dispozici výchozí konstruktor, tento příkaz povede k chybě v době kompilace pokud už tedy máme napsaný nějaký konstruktor, musíme výchozí konstruktor doplnit sami // deklarace konstruktorů obdelnik(); obdelnik(int v, int s); // defince konstruktorů obdelnik::obdelnik() obdelnik::obdelnik(int v, int s) vyska = v; sirka = s; Třída má teď dva přetížené konstruktory. Výchozí konstruktor sice nic nedělá, ale i to stačí k tomu abychom mohli vytvořit - pole obdélníků obdelnik[10]; - obdélník bez parametrů obdelnik O; Bylo by však samozřejmě možné do těla výchozího konstruktoru doplnit kód sloužící k nastavení nějakých úvodních hodnot datových členů: obdelnik::obdelnik() vyska = sirka = 1; 7
8 Kopírovací konstruktor konstruktor, který si jako parametr bere odkaz na objekt dané třídy a má za úkol vytvořit jeho kopii (tzn. nastavit datové členy nového objektu podle předaného vzoru) // deklarace obdelnik(const obdelnik & vzor); // definice obdelnik::obdelnik(const obdelnik & vzor) vyska = vzor.vratvysku(); sirka = vzor.vratsirku(); v programu použijeme kopírovací konstruktor takto: Parametr vzor předaný odkazem se obvykle deklaruje jako konstantní, protože kopírovací konstruktor nemění jeho data. kopírovací knstruktor nastaví členská data podle předloženého vzoru obdelnik O(7, 4); // vytvoření nějakého obdélníka obdelnik P(O); // vytvoření jeho kopie - P má šířku a výšku stejnou jako O Kopírovací konstruktor je ke třídě automaticky poskytnut kompilátorem. Pokud třída nealokuje data na haldě, poskytnutý kopírovací konstruktor funguje správně a není potřeba psát vlastní. 8
9 Kopírovací konstruktor pro třídu alokující paměť na haldě následující třída čtverec má svou datovou položku strana alokovanou na haldě a udržuje si na ni pointer class ctverec public: // konstruktor, destruktor ctverec(int s); ~ctverec(); // pristupove funkce int VratStranu() const return *strana; void NastavStranu(int s) *strana = s; private: int *strana; ; // definice konstruktoru ctverec::ctverec(int s) strana = new int; *strana = s; Co se stane, když pro objekt této třídy použijeme vestavěný kopírovací konstruktor? 9
10 Kopírovací konstruktor pro třídu alokující paměť na haldě pokud použijeme vestavěný kopírovací konstruktor, dojde k přesnému nakopírování hodnoty proměnné strana (tedy paměťové adresy), oba čtverce (vzor i kopie) budou ukazovat na tutéž adresu v paměti ctverec C(5); // vytvoření čtverce ctverec Kopie(C); // vytvoření kopie ctverec C strana 5 ctverec Kopie strana pokud jednomu ze čtverců změníme hodnotu strany, změníme ji oběma pokud bude jeden z čtverců smazán, druhý bude ukazovat na neplatnou adresu aby k tomu nedošlo, je potřeba napsat vlastní kopírovací konstruktor, který pro nově vytvářený objekt alokuje paměť a zkopíruje do ní hodnotu datové položky vzoru // kopírovací konstruktor ctverec::ctverec(const ctverec & vzor) strana = new int; *strana = vzor.vratstranu(); ctverec Kopie(C); // vytvoření kopie ctverec C strana 5 5 ctverec Kopie strana 10
11 Přetížení operátorů vestavěné operátory (+, -, *...), které pracují se základními datovými typy (int, double...) lze přetížit tak, aby pracovaly i s nově vytvořenými typy třídami přetížené operátory mohou být a) běžnými funkcemi funkce má přesně tolik parametrů, kolik má operátor operandů operátor sčítání (+) bude mít dva parametry, operátor inkrementace (++) jeden b) metodami třídy operátory jako členské funkce mají v seznamu parametrů o jeden operand méně než by měly mít, protože jedním z operandů je automaticky ten objekt, jehož funkce je volána unární operátory (např. ++) jsou jako členské funkce bez parametrů (pracují na objektu samém) binární operátory (+, ==...) mají jeden parametr - objekt na pravé straně operátoru (levou stranou je objekt, jehož funkce byla volána) k přetěžování operátorů slouží klíčové slovo operator, za který píšeme daný operátor funkce, přetěžující operátor + se deklaruje takto: návratový typ operator+(seznam parametrů) 11
12 Přetížení operátorů k demonstraci principů přetěžování operátorů použijeme třídu cislo, která jako svoji jedinou datovou položku uchovává celočíselnou hodnotu (reálný smysl by měla např. třída matice...) // deklarace třídy class cislo public: cislo(int h); int VratHodnotu() const return hodnota; void NastavHodnotu(int h) hodnota = h; private: int hodnota; ; // definice konstruktoru cislo::cislo(int h) hodnota = h; 12
13 Operátory jako běžné funkce Binární oprátor: sčítání // deklarace přetíženého operátoru + cislo operator+(cislo a, cislo b); // definice cislo operator+(cislo a, cislo b) cislo c(a.vrathodnotu() + b.vrathodnotu()); return c; funkce, přetěžující operátor, má název složený z klíčového slova operator, za kterým následuje typ operátoru (v tomto případě +), následují závorky se seznamem parametrů (dva objekty typu cislo, které bude sčítat) návratovou hodnotou je objekt typu cislo (aby bylo možné výsledek sčítání přiřadit jinému objektu cislo) v těle funkce se vytvoří objekt typu cislo, kterému se nastaví hodnota rovná součtu hodnot operandů, tento objekt je funkcí vrácen cislo a(7), b(5), c(0); c = a + b; // použití přetíženého operátoru cout << hodnota c je << c.vrathodnotu(); 13
14 Operátory jako běžné funkce všimněme si, že přetížený operátor + nijak nemění hodnoty operandů (parametrů), pouze tyto hodnoty použije k nastavení hodnoty výsledku je tedy rozumné předávat operandy do funkce jako odkazy, funkce si nebude pořizovat jejich lokální kopie, ale bude pracovat přímo s předanými proměnnými pro jistotu deklarujeme operandy jako konstantní odkazy, budeme tak mít jistotu (ohlídanou kompilátorem), že se předané objekty skutečně nezmění // deklarace přetížení operátoru + cislo operator+(const cislo & a, const cislo & b); // definice cislo operator+(const cislo & a, const cislo & b) cislo c(a.vrathodnotu() + b.vrathodnotu()); return c; Obecně platí, že pokud funkce nemění předané parametry, je výhodné tyto parametry předávat jako (konstantní) odkazy. Nedochází tak ke zbytečnému pořizování lokálních kopií. 14
15 Operátory jako běžné funkce Unární oprátor: mínus chceme, aby mezi objekty cislo bylo možné používat unární mínus, tedy aby bylo možné napsat a = -b; musíme přetížit unární operátor - // deklarace cislo operator-(const cislo & a); // definice cislo operator-(const cislo & a) cislo b(-a.vrathodnotu()); return b; Parametr (operand) je opět předáván jako konstantní odkaz, funkce nemění jeho hodnoty. pozn. dočasný objekt b, který je ve funkci vytvořen, není nutné pojmenovávat: cislo operator-(const cislo & a) return cislo(-a.vrathodnotu()); 15
16 Operátory jako běžné funkce Unární operátor: inkrementace operátor inkrementace má dvě formy 1. prefixovou ++x (zvyšuje hodnotu x o jedničku, vrací zvýšenou hodnotu) 2. postfixovou x++ (zvyšuje hodnotu x o jedničku, ale vrací původní hodnotu) Přetížení prefixové varianty cislo operator++(cislo & a) a.nastavhodnotu(a.vrathodnotu() + 1); return a; operand je do funkce předáván jako odkaz, ale tentokrát není konstantní, protože funkce bude měnit jeho hodnotu (zvyšovat ji o jedničku) cislo a(7), b(2); b = ++a; cout << "hodnota a je " << a.vrathodnotu() << endl; cout << "hodnota b je " << b.vrathodnotu() << endl; 16
17 Operátory jako běžné funkce návratová hodnota operátoru je objekt typu cislo, aby bylo možné výsledek práce operátoru přiřadit jinému objektu, tzn. aby šlo napsat b = ++a; vracený objekt se z funkce operator++ vrací hodnotou, tzn. při návratu se vytvoří jeho kopie, která je posléze přiřazena do objektu vlevo od operátoru = je tedy zbytečně volán kopírovací konstruktor, v tomto případě je účelnější předávat objekt z funkce odkazem: cislo & operator++(cislo & a) a.nastavhodnotu(a.vrathodnotu() + 1); return a; Nyní se už nepořizuje kopie vraceného objektu, vracen je přímo objekt předaný funkci jako parametr. Ten také figuruje jako pravá strana operátoru =, pokud je inkrementace spojena s přiřazením jako v případě příkazu b = ++a; 17
18 Operátory jako běžné funkce Přetížení postfixové varianty inkrementace aby kompilátor rozeznal o kterou variantu jde, platí úmluva, že u přetěžování postfixové varianty je funkci jako parametr navíc předáno celé číslo tento parametr bude ve funkci ignorován, jedná se jen o příznak toho, že přetěžujeme postfix cislo operator++(cislo & a, int priznak) cislo pomocne(a.vrathodnotu()); a.nastavhodnotu(a.vrathodnotu() + 1); return pomocne; Funkce nejdříve vytvoří pomocný objekt cislo se stejnou hodnotou jako předaný parametr. Potom zvýší hodnotu parametru a nakonec vrátí objekt s původní hodnotou. parametr priznak se ve funkci nepoužívá, nepoužívá se ani při aplikaci operátoru v programu: cislo a(7), b(2); b = a++; cout << endl; cout << " hodnota a je " << a.vrathodnotu() << endl; cout << " hodnota b je " << b.vrathodnotu() << endl; 18
19 Operátory jako běžné funkce návratovou hodnotou je opět objekt typu cislo, který ale v tomto případě musí být vracen hodnotou (s pomocí kopie) a nikoliv odkazem důvody: postfixový operátor musí změnit hodnotu parametru, ale vrací původní hodnotu (před změnou) je tedy potřeba vytvořit dočasný objekt pro uchování původní hodnoty a ten vrátit, což se musí provést hodnotou, protože dočasný objekt se po skončení funkce opustí svůj obor platnosti (předávali bychom odkaz na již neexistující objekt) 19
20 Pointer this každá funkce třídy má k dispozici zvláštní pointer, který obsahuje adresu objektu, se kterým funkce aktuálně pracuje, tento pointer se nazývá this následující funkce ověřuje, že pointer vždy ukazuje na aktuální objekt // členská funkce třídy cislo, ověřující hodnotu pointeru this const cislo * HodnotaThis() return this; použití funkce demonstruje, že this vždy obsahuje adresu aktuálního objektu: cislo a(7); cout << cislo a << endl; cout << adresa: << &a << endl; cout << this: << a.hodnotathis() << endl; cislo b(4); cout << cislo b << endl; cout << adresa: << &b << endl; cout << this: << b.hodnotathis() << endl; pointer this je možné využít při přetěžování operátorů (viz dále) 20
21 Přetížené operátory jako členské funkce Operátor inkrementace jako členská funkce // deklarace (v deklaraci třídy) cislo & operator++(); // definice cislo & cislo::operator++() ++hodnota; return *this; funkce přetěžující prefixovou variantu ++ využívá pointeru this k tomu, aby vrátila odkaz na objekt se zvýšenou hodnotou (funkce tedy vrací ten objekt, se kterým zrovna pracuje) 21
22 Přetížené operátory jako členské funkce Operátor sčítání jako členská funkce // deklarace (v deklaraci třídy) cislo operator+(const cislo & pravastrana); // definice cislo cislo::operator+(const cislo & pravastrana) return cislo(hodnota + pravastrana.vrathodnotu()); // použití v programu cislo a(7), b(2), c(0); c = a + b; // hodnota c je teď 9 Pozn. protože operátor + je teď členskou funkcí třídy, šel by zavolat i takto: c = a.operator+(b); 22
23 Přetížené operátory jako členské funkce Operátor porovnání jako členská funkce // deklarace (v deklaraci třídy) bool operator==(const cislo & pravastrana) const; // definice bool cislo::operator==(const cislo & pravastrana)const return (hodnota == pravastrana.vrathodnotu()); funkce vrací hodnotu typu bool, která informuje o tom, zda se objekty rovnají cislo a(7), b(4); if (a == b) // použití operátoru ==... pokud bychom chtěli používat operátor!=, museli bychom ho přetížit také (z přetížení == neplyne možnost automaticky použít doplňkový!=) 23
24 Přetížení operátoru přiřazení operátor přiřazení je ke třídě automaticky poskytován kompilátorem, můžete tedy provádět přiřazení mezi jednotlivými objekty třídy cislo a(5), b(7); a = b; cout << "hodnota a je " << a.vrathodnotu(); kompilátorem poskytnutý operátor přiřazuje hodnoty datových členů pravého objektu do datových členů levého objektu (jak by se dalo čekat) problém nastane, pokud třída uchovává pointer na data na haldě, potom při použití vestavěného operátoru dojde ke zkopírování adresy a oba objekty ukazují do stejného místa (stejná situace jako u kopírovacího konstruktoru) cislo a hodnota cislo b hodnota a = b; cislo a hodnota cislo b hodnota v tomto případě je nutné napsat vlastní operátor 24
25 Přetížení operátoru přiřazení přetížený operátor = pak může vypadat např. takto: cislo & cislo::operator=(const cislo & pravastrana) *hodnota = pravastrana.vrathodnotu(); return *this; cislo a hodnota cislo b hodnota a = b; cislo a hodnota cislo b hodnota funkce vrací objekt cislo, aby bylo možné napsat a = b = c; objekt je vracen odkazem, aby nedocházelo ke zbytečnému volání kopírovacího konstruktoru k vracení odkazem je použit pointer this 25
26 Poznámky k přetěžování operátorů Omezení kladená na přetěžování operátorů není možné vytvářet nové operátory není možné měnit aritu operátorů (tzn. jestli je operátor unární či binární) přetěžováním nelze změnit prioritu operátorů nelze přetížit operátory pro standardní datové typy (např. int, double...) operátory = (přiřazení), -> (nepřímý přístup přes pointer), [] (index), () (volání funkce) musí být metodami třídy 26
27 Konverze mezi objekty třídy a jinými datovými typy v praxi může být užitečné moci konvertovat proměnnou nějakého typu (ať už defaultního nebo objektu jiné třídy) na objekt naší třídy, případně moci provést konverzi opačnou Konverze jiný typ objekt naší třídy provádíme pomocí konstruktoru, který jako parametr přebírá proměnnou daného typu a vytvoří objekt naší třídy chceme-li umět konvertovat celočíselnou hodnotu na objekt cislo, potřebujeme konstruktor přebírající celočíselnou hodnotu: cislo(int a); s pomocí tohoto můžeme jednak vytvořit objekt: cislo a(7), ale umožní nám i toto: int x = 10; // proměnná typu int cislo c; // objekt cislo (zde např. pomocí výchozího konstruktoru) c = x; // konverze integeru x na objekt cislo Co se děje na třetím řádku? Na pravé straně operátoru = se vytvoří dočasný objekt cislo (pomocí konstruktoru přebírajícího celé číslo), tento dočasný objekt je pak přiřazen objektu c stejným způsobem lze konvertovat objekty jiných tříd na objekt cislo, vždy je nutné mít napsaný konstruktor, přebírající objekt dané třídy 27
28 Konverze mezi objekty třídy a jinými datovými typy Konverze objekt naší třídy jiný typ provádíme pomocí operátoru konverze deklarace operátoru konverze vypadá takto operator typ(); operátor konverze nemá návratovou hodnotu, ale ve skutečnosti vždy vrací deklarovaný typ konverze objektu cislo na int se provede takto // deklarace operator int(); // definice cislo::operator int() return hodnota; použití v programu cislo a(7); // objekt typu cislo int x = a; // konverze objektu cislo na int stejným způsobem lze konvergovat objekt cislo na objekt jiné třídy 28
přetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního
VíceZáklady C++ I. Jan Hnilica Počítačové modelování 18
Základy C++ I 1 Přechod z C na C++ jazyk C++ je nadmnožinou jazyka C z hlediska syntaxe se jedná o velmi podobné jazyky, spolu s dalšími jazyky "céčkovské" rodiny, jako je např. C# každý platný program
VíceMělká a hluboká kopie
Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
VíceVíce o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
VíceJazyk C++ I. Polymorfismus
Jazyk C++ I Polymorfismus AR 2013/2014 Jazyk C++ I Operátory Co to vůbec jsou operátory? Na co je používáme? AR 2013/2014 Jazyk C++ I 2 Operátory Můžeme si upravit operátory pro vlastní objektové typy?
Vícepřetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - operátor je speciální
VícePokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce
VíceProgramování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
VícePřetěžování operátorů
Přetěžování operátorů Cíle lekce Cílem lekce je seznámit se s mechanizmem přetížení operátorů a s použitím tohoto mechanizmu při návrhu a implementaci programů. Po absolvování lekce budete: umět využívat
VícePřetěžování operátorů
Karel Müller, Josef Vogel (ČVUT FIT) Přetěžování operátorů BI-PA2, 2011, Přednáška 4 1/31 Přetěžování operátorů Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
VícePŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
VícePB161 Programování v jazyce C++ Přednáška 4
PB161 Programování v jazyce C++ Přednáška 4 Přetěžování funkcí Konstruktory a destruktory Nikola Beneš 9. října 2017 PB161 přednáška 4: přetěžování funkcí, konstruktory, destruktory 9. října 2017 1 / 20
VícePokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody
Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
VíceKonstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
VícePointery II. Jan Hnilica Počítačové modelování 17
Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky
VíceVector datový kontejner v C++.
Vector datový kontejner v C++. Jedná se o datový kontejner z knihovny STL jazyka C++. Vektor je šablona jednorozměrného pole. Na rozdíl od "klasického" pole má vector, mnoho užitečných vlastností a služeb.
VícePB161 Programování v jazyce C++ Přednáška 9
PB161 Programování v jazyce C++ Přednáška 9 Právo friend Přetěžování operátorů Nikola Beneš 16. listopadu 2015 PB161 přednáška 9: friend, přetěžování operátorů 16. listopadu 2015 1 / 30 Reklama PB173 Tematicky
VíceFunkční objekty v C++.
Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční
VícePokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++ Prostory jmen U programů mohou někdy nastat kolize mezi jmény (tříd, funkcí, globálních proměnných atd.) pokud v různých
Více7 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,
Více8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
VíceProjekt Obrázek strana 135
Projekt Obrázek strana 135 14. Projekt Obrázek 14.1. Základní popis, zadání úkolu Pracujeme na projektu Obrázek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy
VícePolymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března
Polymorfismus Cíle lekce Cílem lekce je vysvětlit význam pojmu polymorfismus jako základní vlastnosti objektově orientovaného programování. Lekce objasňuje vztah časné a pozdní vazby a jejich využití.
VíceC++ objektově orientovaná nadstavba programovacího jazyka C
C++ objektově orientovaná nadstavba programovacího jazyka C (1. část) Josef Dobeš Katedra radioelektroniky (13137), blok B2, místnost 722 dobes@fel.cvut.cz 5. května 2014 České vysoké učení technické v
VíceProgramování v C++ VI
Programování v C++ VI Konstruktory, destruktory a dědičnost Konstruktory a dědičnost I když jsme se bavili o dědičnosti, trochu jsme zapomněli na konstruktory to se ale nevyplácí, vzpomeňte si, jak důležitý
Vícefor (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }
Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný
VíceProgramování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceMnohotvarost (polymorfizmus)
Mnohotvarost (polymorfizmus) TYPY MNOHOTVAROSTI... 2 PŘETĚŽOVÁNÍ METOD, PŘETĚŽOVÁNÍ OPERACÍ... 3 PŘETÍŽENÍ OPERÁTORŮ... 4 ČASTO PŘETĚŽOVANÉ OPERÁTORY... 4 PŘEPISOVÁNÍ... 7 VIRTUÁLNÍ METODY... 10 SEZNAM
VíceAlgoritmizace a programování
Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech
VícePROGRAMOVÁNÍ V C++ CVIČENÍ
PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné
VíceMartin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016
ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce
VíceDědění, polymorfismus
Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá
VícePřetěžování operátorů, dynamika objektů 2
Přetěžování operátorů, dynamika objektů 2 Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 03/2016, Lekce 6 https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
VíceZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
VíceObsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
VíceStandardní algoritmy vyhledávací.
Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární
VíceMartin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016
ZPRO cvičení 8 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague December 7, 2016 Outline I 1 Outline 2 Dynamické alokování paměti 3 Dynamická alokace
VíceJazyk C++ II. Šablony a implementace
Jazyk C++ II Šablony a implementace AR 2013/2014 Jazyk C++ II Úvod Dědičnost a kompozice nejsou vždy tou správnou odpovědí na požadavky znovupoužitelnosti kódu. Proto máme možnost definování určité třídy
VíceProgramování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
VícePř. další použití pointerů
Př. další použití pointerů char *p_ch; int *p_i; p_ch = (char *) p_i; // konverze int * na char * 8 int i = 5; int *p_i; p_i = &i; POZOR!!!! scanf("%d", p_i); printf("%d", *p_i); Obecný pointer na cokoliv:
Více2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
Více7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
VíceProgramování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
VíceProgramování v C++ 1, 6. cvičení
Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
VíceÚvod do programování. Lekce 1
Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -
VícePole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0
Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0 int policko[100]; // tj. pole je od 0 do 99!!! policko[5] = 7; // pozor je to 6. prvek s indexem 5
VíceJazyk C# (seminář 6)
Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí
Více5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
Více24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
VíceSYSTÉMOVÉ PROGRAMOVÁNÍ Cvičení č.1
SYSTÉMOVÉ PROGRAMOVÁNÍ Cvičení č.1 Autor: Ing. Michal Bližňák Témata cvičení: Bleskový úvod do C++ Rozdíly mezi C a C++ Základním rozdílem mezi C a C++ samozřejmě je, že C++ je na rozdíl od tradičního
VíceProgramování v jazyce C a C++
Programování v jazyce C a C++ Richter 1 Petyovský 2 1. března 2015 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno 2 Ing. Petyovský Petr, UAMT FEKT VUT Brno C++ Stručná charakteristika Nesdíĺı normu
Víceint ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N
Struktura (union) - struktura a union jsou složené typy, které "v sobě" mohou obsahovat více proměnných - struktura obsahuje v každém okamžiku všechny své proměnné, union obsahuje (=je "aktivní") pouze
VíceJazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem
Jazyk C++ 1 Blok 3 Objektové typy jazyka C++ Studijní cíl Ve třetím bloku bude představen a rozebrán nejdůležitější objektový typ jazyka C++ a to sice třída. Po absolvování bloku bude student schopen navrhovat
Více14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
VíceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
VíceDUM 06 téma: Tvorba makra pomocí VBA
DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie
VíceObjektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.
C++ Akademie SH Za áte níci C++ 2. kv tna 2011 Obsah 1 Objektov orientované programování Obsah Objektov orientované programování 1 Objektov orientované programování P et ºování Jev, díky kterému m ºeme
VícePaměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
VíceUkazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný
Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s
VíceZpracoval: houzvjir@fel.cvut.cz
Zpracoval: houzvjir@fel.cvut.cz 10. Objektově orientované programování v C++. Přetěţování operátorů, generické funkce a třídy, výjimky, knihovny. (A7B36PJC) Obsah OOP v C++... 2 Pro připomenutí - Základní
VíceStandardní algoritmy v C++.
Standardní algoritmy v C++. Standardní algoritmy jsou součástí STL. Jedná se o spoustu užitečných šablon funkcí, které za nás naprogramoval někdo jiný. Na nás je jen, abychom je používali. Také si ukážeme
VíceProgramování v jazyce C a C++
Programování v jazyce C a C++ Příklad na tvorbu třídy Richter 1 4. prosince 2017 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno Dvourozměrné pole pomocí tříd Zadání Navrhněte a napište třídu pro realizace
VícePokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceOperátory, výrazy. Tomáš Pitner, upravil Marek Šabo
Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v
VíceStručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787
Stručný obsah První týden 25 den 1 Začínáme 27 den 2 Anatomie programu C++ 43 den 3 Proměnné a konstanty 57 den 4 Výrazy a příkazy 79 den 5 Funkce 107 den 6 Objektově orientované programování 141 den 7
VíceVýčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
VíceČtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
VíceVýrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
VíceStatické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
VíceZáklady programování (IZP)
Základy programování (IZP) Šesté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 6. týden
VícePole a kolekce. v C#, Javě a C++
Pole a kolekce v C#, Javě a C++ C# Deklarace pole typ_prvku_pole[] jmeno_pole; Vytvoření pole jmeno_pole = new typ_prvku_pole[pocet_prvku_pole]; Inicializace pole double[] poled = 4.8, 8.2, 7.3, 8.0; Java
VícePB161 Programování v jazyce C++ Přednáška 4
PB161 Programování v jazyce C++ Přednáška 4 Dynamická alokace Kopírovací konstruktor Přetypování v C++ Nikola Beneš 12. října 2015 PB161 přednáška 4: dynamická alokace, kopírovací konstruktor, casting
VíceProgramování II. Návrh programu I 2018/19
Programování II Návrh programu I 2018/19 Osnova přednášky Co víme? Objektový návrh programu. Příklad. Co víme? Třída Třída je popisem objektů se společnými vlastnostmi. class private:
VíceChování konstruktorů a destruktorů při dědění
Dědičnost V objektově orientovaném programování je dědičnost způsob, jak vytvořit novou třídu použitím již existujících definic jiných tříd. Takto vytvořené třídy přebírají vlastnosti a metody svého předka
VíceUkazatele a pole. Chceme-li vyplnit celé pole nulami, použijeme prázdný inicializátor: 207 Čárka na konci seznamu inicializátorů
Ukazatele a pole 204 Deklarace jednorozměrného pole s inicializací Chceme-li pole v deklaraci inicializovat, zapíšeme seznam inicializátorů jednotlivých prvků do složených závorek: #define N 5 int A[N]
VíceJazyk C++ I. Šablony 2
Jazyk C++ I Šablony 2 AR 2013/2014 Jazyk C++ I Třídy template class TVektor { T *a; int n; static int PocInstanci; public: TVektor(int _n = 0) : n(_n) { a = new T[n]; PocInstanci++; } ~TVektor()
VíceLineární spojový seznam (úvod do dynamických datových struktur)
Lineární spojový seznam (úvod do dynamických datových struktur) Jan Hnilica Počítačové modelování 11 1 Dynamické datové struktury Definice dynamické struktury jsou vytvářeny za běhu programu z dynamicky
VíceProměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.
Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné
VíceAbstraktní třídy, polymorfní struktury
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství
Vícemap, multimap - Asociativní pole v C++.
map, multimap - Asociativní pole v C++. Jedná se o asociativní pole. V asociativním poli jsou uloženy hodnoty ve tvaru (klíč,hodnota), kde klíč je vlastně "index" prvku. Klíčem může být libovolný objekt,
VíceUkazatele, dynamická alokace
Ukazatele, dynamická alokace Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad, Martin Mazanec Karel Richta,
VíceObjektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceIterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;
Iterátory v C++. Iterátor v C++ je vlastně taková obdoba ukazatelů pro kontejnery. Dříve, než se dostaneme k bližšímu vysvětlení pojmu iterátor, ukážeme si jednoduchý příklad, jak pracovat s obyčejným
Více- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:
21.4.2009 Makra - dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h - jak na vlastní makro: #define je_velke(c) ((c) >= 'A' && (c)
VíceIAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);
Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());
VíceProgramování v C++ 1, 14. cvičení
Programování v C++ 1, 14. cvičení výpustka, přetěžování funkcí, šablony funkcí 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 funkcí
Více<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************
zdroje/zdroje.xml
Vícekonstruktory a destruktory (o)
konstruktory a destruktory (o) - slouží k ovlivnění vzniku (inicializace) a zániku (úklid) objektu - základní myšlenkou je, že proměnná by měla být inicializována (nastavena do počátečního stavu) a zároveň
VíceUkazka knihy z internetoveho knihkupectvi www.kosmas.cz
Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena
VíceDatové typy strana 29
Datové typy strana 29 3. Datové typy Jak již bylo uvedeno, Java je přísně typový jazyk, proto je vždy nutno uvést datový typ datového atributu, formálního parametru metody, návratové hodnoty metody nebo
VícePB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory
PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových
VíceMnožina v C++ (set, multiset).
Množina v C++ (set, multiset). Množina je datová struktura, ve které jsou uloženy nějaké prvky. V množině nesmí být dva stejné prvky. Naopak multimnožina může obsahovat i stejné prvky. Nad množinou lze
Více1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
VíceÚvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39
Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy
VícePokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++ Dědičnost tříd Dědičnost umožňuje vytvářet nové třídy z tříd existujících tak, že odvozené třídy (tzv. potomci) dědí vlastnosti
Více