prog_cpp
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| prog_cpp [2015/12/18 16:07] – [Třídy] djbuldog | prog_cpp [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 22: | Řádek 22: | ||
| * třída má konstruktor a desktruktor | * třída má konstruktor a desktruktor | ||
| * objekt = dynamická/ | * objekt = dynamická/ | ||
| - | + | ||
| - | * dědičnost, | + | * pokud ve třídě máme nějakou const položku, musíme ji inicializovat v konstruktoru, |
| - | * třída dědí vše od svého předchudce | + | <code cpp> |
| + | class MyClass { | ||
| + | |||
| + | private: | ||
| + | const int number; | ||
| + | MyClass(): | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| + | * static const se inicializuje takto | ||
| + | |||
| + | <code cpp> | ||
| + | class MyClass { | ||
| + | |||
| + | private: | ||
| + | static const int number; | ||
| + | } | ||
| + | |||
| + | const int MyClass:: | ||
| + | </ | ||
| + | ==== dědičnost | ||
| + | |||
| + | | ||
| + | * při deklaraci podřazené třídy se specifikuje, | ||
| + | * zápis '' | ||
| + | * zápis '' | ||
| + | * zápis '' | ||
| * virtual | * virtual | ||
| Řádek 30: | Řádek 57: | ||
| * Někdy není v době překladu jasné, jestli se má zavolat metoda podtřídy nebo nadtřidy. | * Někdy není v době překladu jasné, jestli se má zavolat metoda podtřídy nebo nadtřidy. | ||
| * Klíčové slovo virtual tento problém řeší až při běhu. | * Klíčové slovo virtual tento problém řeší až při běhu. | ||
| + | * virtuální destruktor | ||
| + | * je potřeba v Base třídě (ze které se dědí) pokud se používá dynamická alokace objektů | ||
| + | * jinak hrozí, že se bude volat pouze destruktor Base třídy - viz triky | ||
| * Příklad problému bez virtual: | * Příklad problému bez virtual: | ||
| Řádek 81: | Řádek 111: | ||
| * v určité podtřídě chování virtuální metody předefinujeme | * v určité podtřídě chování virtuální metody předefinujeme | ||
| - | === polymorfismus === | + | ==== polymorfismus ==== |
| + | |||
| + | http:// | ||
| mám obecnou třídu a pak specifické podtřídy. V konstruktoru se inicializuje pro každou specifickou třídu něco jiného. Obecná třída má metodu run. Chci udělat frontu (vector) obecné třídy a při zpracování pak volat metodu run, která zachová podle hodnot nastavených v konstruktoru. Problém: jak to do té fronty dostat? | mám obecnou třídu a pak specifické podtřídy. V konstruktoru se inicializuje pro každou specifickou třídu něco jiného. Obecná třída má metodu run. Chci udělat frontu (vector) obecné třídy a při zpracování pak volat metodu run, která zachová podle hodnot nastavených v konstruktoru. Problém: jak to do té fronty dostat? | ||
| Řádek 88: | Řádek 120: | ||
| http:// | http:// | ||
| - | < | + | < |
| - | lass Animal { /* Some virtual members */ } | + | class Animal { /* Some virtual members */ } |
| class Dog: public Animal {}; | class Dog: public Animal {}; | ||
| class Cat: public Animal {}; | class Cat: public Animal {}; | ||
| Řádek 113: | Řádek 145: | ||
| </ | </ | ||
| - | < | + | < |
| Animal | Animal | ||
| // assigns the animal part of the object. | // assigns the animal part of the object. | ||
| Řádek 121: | Řádek 153: | ||
| </ | </ | ||
| - | < | + | < |
| std:: | std:: | ||
| barnYard.push_back(& | barnYard.push_back(& | ||
prog_cpp.1450451261.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
