003
22.09.2003, 09:58 Uhr
virtual
Sexiest Bit alive (Operator)
|
@unwissender: nee, so stimmt das nicht:
C++: |
#include <iostream> class A { public: virtual void f() { std::cout<<"A::f()"<<std::endl; }; };
class B: public A { public: virtual void f() { std::cout<<"B::f()"<<std::endl; }; };
void g(A& a) { a.f(); }
int main() { B b; A a; g(a); g(b); }
|
Das dürfte nach Deiner Theorie nicht die Ausgabe machen, die es nun mal macht. Polymorphie kannst du auch ohne new nutzen. Der Grund ist wirklich einfach nur, daß die STL Container ganz stupide ihre Elemente Kopieren Und wenn Du sagst, du hast einen A-Container, wird auch immer nur der A-Antail eines Objekts kopiert, egal, ob wirklich ein A oder ein Objekt einer abgeleiteten Klasse reingestopft wurde. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |