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