Wpis z mikrobloga

@Kiszka_94: Nie mam problemu z zapamiętywaniem, wcześniej programowałem w językach wyższego poziomu w których nie było zabawy ze wskaźnikami (Java, języki webowe). Najbardziej chodzi mi o ten fragment:

Base *e = new Ext();
Base *e1 = new Ext2();

I o to że tworzę obiekty klas rozszerzających klasę Base do zmiennej typu Base zamiast:

Ext e = Ext();
Ext e1 = Ext2();
protected


@simia: Tak jak napisałem wyżej - tylko wtedy kiedy akceptowalna jest niemożliwość zniszczenia obiektu klasy bazowej. To jest raczej rzadki przypadek. W każdym innym przypadku powinien być wirtualny, inaczej wnosimy ryzyko undefined behaviour do programu.
każdy polimorficzny typ nie oznaczony jako final.


@wolodia: nie widzę sensu istnienia czegoś takiego. skoro typ jest polimorficzny i final to dziedziczy po typach które są polimorficzne i mają wirtualny destruktor , a ponieważ wirtualny destruktor jest dziedziczony, to taki typ i tak będzie miał wirtualny destruktor.
@wolodia: Jasne zgoda. Prawde mowiac nie jest to tak rzadki przypadek jakby sie moglo wydawac. Zgadzam sie w pelni z "powinien byc wirtualny albo niepubliczny" nie zgadzam sie z "powinien byc wirtualny".