#include <iostream.h> class X { public: virtual void f () { cout << "X::f" << endl; g (); } void g () { cout << "X::g" << endl;} }; class Y : public X { public: void f () { cout << "Y::f" << endl; } void g () { cout << "Y::g" << endl; f (); } }; class Z : public Y { public: void f () { cout << "Z::f" << endl; } void g () { cout << "Z::g" << endl; f (); } }; void P ( X * px, Y * py ) { px->f (); px->g (); py->f (); py->g (); delete px; delete py; } int main () { P ( new X, new Y ); cout << "------------------------------" << endl; P ( new Y, new Z ); return 0; }
TYPE T* = RECORD I*, J : INTEGER; END; TYPE T1* = RECORD ( T ) K : INTEGER; END; PROCEDURE ( VAR X: T ) P* ( L : INTEGER ); PROCEDURE ( VAR X: T1 ) P* ( L : INTEGER );
struct S { explicit S ( int ); double i, j; };
void f () throw ( E1, E2, E3 ) { g (); h (); }предполагая, что конструкция throw не допускается компилятором.