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!


> 
> On Sep  5, 2000, Benjamin Scherrey <scherrey@switchco.com> wrote:
> 
> > 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?
> 
> The latter.  It is the most derived class that must construct all
> virtual base classes, even indirect ones.  If it doesn't, default
> constructors are used, even if other base classes specify constructor
> arguments for virtual bases.

This is one of the major botches in C++.  The only way around it that will
scale is to have a policy that, whenever virtual base classes are used,
the virtual base must have a default constructor and this constructor must
be the one that is used in the constructor for any derived object that
uses the virtual base.  Otherwise you have a major violation of
encapsulation and all derived classes have to worry about initializing the
virtual base correctly, and if anyone makes a derived class that doesn't
do this, things don't work right.

The compiler, of course, has to support people who violate this design
rule.




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