chatty%FRLRI61.BITNET@CUNYVM.CUNY.EDU (02/08/91)
// the following program is accepted by both g++ and cfront 2.0.
// It leads to the suprising thing that a virtual method of class B is
// called before the body of the constructor is entered.
// I think ARM, p47, s5.1, forbids the use of 'this' in member
// initialization.
// any comments?
extern "C" void printf (const char*, ...);
class A {
public:
A () {}
virtual void foo () {printf ("A::foo\n");}
};
class Z {
public:
Z (A* a) {a->foo ();}
};
class B : public A {
public:
Z z;
B () : A (), z (this) {printf ("B::B\n");} // legal?!
void foo () {printf ("B::foo\n");}
};
main ()
{
B b;
}
// % a.out
// B::foo
// B::B
Stephane Chatty chatty@lri.lri.fr, chatty@frlri61.bitnet