<html><body>No uz z principu ne - ten getter (getval()) neni virtual a ani neni override, takze chcete po predkovi (tride basecls), aby vratil hodnotu potomka. Proste to je spatne. Vsadim se, ze basecls::testvar a childcls::testvar budou vracet spravne hodnoty (i kdyz bych predpokladal aspon varovani pri prekladu ze tam jedna promenna ma/dela stin druhe).<br><br>-- <br>Pavel Brychta<br>http://www.xpablo.cz<br><br><aside>---------- Původní e-mail ----------<br>Od: Tomas Chvatal <tchvatal@fordiag.cz><br>Komu: HW-news <hw-list@list.hw.cz><br>Datum: 8. 9. 2023 11:44:02<br>Předmět: Re: cplusplus dedeni</aside><br><blockquote data-email="tchvatal@fordiag.cz">Jak predek, tak potomek maji stejnou promennou (tady se tomu nerika
<br>vlastnost ?)
<br>Tedy u potomka, ktery ma napr. jiny "obvod hlavy" bych cekal, ze umi
<br>odpovedet spravnou hodnotu sve hlavy ;-)
<br>
<br>s přáním hezkého dne / best regards
<br>Tomáš Chvátal
<br>tchvatal@fordiag.cz
<br>
<br>----- Původní zpráva -----
<br>Od: "Jaroslav Buchta" <jaroslav.buchta@hascomp.cz>
<br>Komu: <hw-list@list.hw.cz>
<br>Odesláno: 7. září 2023 19:32
<br>Předmět: Re: cplusplus dedeni
<br>
<br>
<br>Asi chybi virtual, ale to jde asi stejne jen na metody. Jak by predek
<br>mohl vedet o promene potomka?
<br>
<br>Dne 07.09.2023 v 19:28 Tomas Chvatal napsal(a):
<br>> Zdravim.
<br>>
<br>> Muze se mi, prosim, nekdo pokusit vysvetlit, jak je to v C++ mysleno s
<br>> "dedenim" vlastnosti ?
<br>> Jsem "tridne postizeny" z VFP a ted jsem u c++ dost zmateny ;-)
<br>>
<br>> Mam tridu "basecls" (ta ma metody getval())
<br>> Od ni dedim do druhe tridy "childcls". V te mam vlastnost testvar
<br>> predefinovanou na jinou hodnotu.
<br>> class basecls {
<br>>
<br>> public:
<br>>
<br>> static const int testvar=100;
<br>>
<br>> int getval() {
<br>>
<br>> return testvar;
<br>>
<br>> }
<br>>
<br>> };
<br>>
<br>> class childcls : public basecls {
<br>>
<br>> public:
<br>>
<br>> static const int testvar=200;
<br>>
<br>> };
<br>>
<br>>
<br>> std::cout << base.getval() << std::endl;
<br>>
<br>> std::cout << child.getval() << std::endl;
<br>>
<br>>
<br>>
<br>> Proc se mi pri volani getval() na obou objektech
<br>> vraci vzdy 100 ?
<br>>
<br>> Mate nejaky odkaz na pekne vysvetleni jak to s tim dedenim zde je ?
<br>> Jsem jenom tak ovlivnen od jinych jazyku, nebo je to s temi tridami v c++
<br>> takove nejake divne, az hnusne ? ;-)
<br>>
<br>> Diky predem.
<br>>
<br>> s přáním hezkého dne / best regards
<br>> Tomáš Chvátal
<br>> tchvatal@fordiag.cz
<br>>
<br>> _______________________________________________
<br>> HW-list mailing list - sponsored by www.HW.cz
<br>> Hw-list@list.hw.cz
<br>> http://list.hw.cz/mailman/listinfo/hw-list
<br>
<br>
<br>_______________________________________________
<br>HW-list mailing list - sponsored by www.HW.cz
<br>Hw-list@list.hw.cz
<br>http://list.hw.cz/mailman/listinfo/hw-list
<br>
<br>_______________________________________________
<br>HW-list mailing list - sponsored by www.HW.cz
<br>Hw-list@list.hw.cz
<br>http://list.hw.cz/mailman/listinfo/hw-list
<br></blockquote></body></html>