This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Non-default ctors, virtual base classes, & multiple inheritance all at once!


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 



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]