Non-default ctors, virtual base classes, & multiple inheritance all at once!
llewelly@edevnull.com
llewelly@edevnull.com
Tue Sep 5 16:35:00 GMT 2000
rlau@csc.com writes:
> Please respond to scherrey@switchco.com
>
> Sent by: gcc-owner@gcc.gnu.org
>
>
> To: gcc@gcc.gnu.org
> cc:
> Subject: Non-default ctors, virtual base classes, & multiple inheritance
> all at once!
>
>
> I'm having some trouble getting non-default constructors called for
> virtual baseclasses in certain instances.. I've attached some code that
> demonstrates this problem. In some cases, I can pass a parameter up the
> tree to the virtual base class, in others, the default ctor is always
> called even though my code clearly specifies the ctor taking a parm. Is
> this a compiler bug or a language design issue?
Language design.
Constructors of virtual base classes are called from the constructor
of the most derived class.
The reason is that any data members in a virtual base class must
appear only once in the final object, and must therefor only be
initialized once. Calling the constructor from the constructor of
the final type is how the langauge ensures this.
For a full explanation, ask comp.lang.c++.moderated
More information about the Gcc
mailing list