Uživatelské nástroje

Nástroje pro tento web


prog_cpp

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
prog_cpp [2016/05/20 11:56] – [Třídy] djbuldogprog_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á/statická instance třídy   * objekt = dynamická/statická instance třídy
-  + 
-  * dědičnost +  * pokud ve třídě máme nějakou const položku, musíme ji inicializovat v konstruktoru, jinak to nejde 
-    * třída dědí vše od svého předchůdce +<code cpp> 
-    * při deklaraci podřazené třídy se specifikuje, jakým způsobem namapovat rodičovskou třídu +class MyClass { 
-      * zápis ''class Dog : public Animal'' - co je public u rodiče, je i u potomka + 
-      * zápis ''class Dog : protected Animal'' - co je public u rodiče, je u potomka jako protected +  private: 
-      * zápis ''class Dog : private Animal'' - co je public u rodiče, je u potomka jako private+    const int number;        // deklarace privatni konstantni promenne 
 +    MyClass():number(10) {}  // konstruktor s definici promenne 
 +   
 +
 +</code> 
 + 
 +  * static const se inicializuje takto 
 + 
 +<code cpp> 
 +class MyClass { 
 + 
 +  private: 
 +    static const int number;        // deklarace 
 +
 + 
 +const int MyClass::number = 10;     // definice 
 +</code> 
 +==== dědičnost ==== 
 + 
 +  * třída dědí vše od svého předchůdce 
 +  * při deklaraci podřazené třídy se specifikuje, jakým způsobem namapovat rodičovskou třídu 
 +    * zápis ''class Dog : public Animal'' - co je public u rodiče, je i u potomka 
 +    * zápis ''class Dog : protected Animal'' - co je public u rodiče, je u potomka jako protected 
 +    * zápis ''class Dog : private Animal'' - co je public u rodiče, je u potomka jako private
  
   * virtual    * virtual 
Řádek 34: Řá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 94: Řádek 120:
  
 http://stackoverflow.com/questions/5313322/c-cast-to-derived-class http://stackoverflow.com/questions/5313322/c-cast-to-derived-class
-<code> +<code c++
-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 119: Řádek 145:
 </code> </code>
  
-<code>+<code c++>
 Animal   animal = cat;    // This works. But it slices the cat part out and just Animal   animal = cat;    // This works. But it slices the cat part out and just
                           // assigns the animal part of the object.                           // assigns the animal part of the object.
Řádek 127: Řádek 153:
 </code> </code>
  
-<code>+<code c++>
 std::vector<Animal*>  barnYard; std::vector<Animal*>  barnYard;
 barnYard.push_back(&dog); barnYard.push_back(&dog);
prog_cpp.1463738187.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki