I have some legacy code that I have to wrap, and I have come across this declaration:
class Foo : Bar
{
// ...
};
This seems to compile under GCC. I know it's bad, but I can't change it. My question is, if no inheritance access specifier is present, how does the C++ compiler handle it?
For classes, the default is private
.
For structs, the default is public
.
BTW, it is not called access modifier. It is called access specifier
$11.2/2 - "In the absence of an access-specifier for a base class, public is assumed when the derived class is defined with the class-key struct and private is assumed when the class is defined with the class-key class."
In your context, 'Bar' is a private base class of 'Foo'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With