This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Non-default ctors, virtual base classes, & multiple inheritance all at once!
- To: scherrey at switchco dot com
- Subject: Re: Non-default ctors, virtual base classes, & multiple inheritance all at once!
- From: llewelly at edevnull dot com
- Date: 05 Sep 2000 16:36:09 -0600
- Cc: gcc at gcc dot gnu dot org
- References: <OF07792A8F.C99999F6-ON86256951.006954DE@com>
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