cplusplus dedeni

Ladislav Vaiz spam na nagano.cz
Čtvrtek Září 7 20:57:29 CEST 2023


No já bych to napsal takto:


#include <iostream>

class basecls {
     public:
     virtual int getval() {
         return 100;
     }
};

class childcls : public basecls {
     public:
     virtual int getval() override {
         return 200;
     }
};

int main(){
     basecls base;
     childcls child;
     std::cout << base.getval() << std::endl;
     std::cout << child.getval() << std::endl;
}


./a.out
100
200

V každé instanci je tabulka virtuálních metod. Instance různých typů 
mají různé hodnoty ukazatele. Volání je pak přes ten ukazatel, volají se 
pak různé metody. Mimochodem takto jde udělat dědičnost "ručně" i v C.

Statickým vlastnostem je dobré se vyhnout, bývají s nimi problémy.


L.



Další informace o konferenci Hw-list