В C ++ наследование структуры такое же, как у класса, за исключением следующих отличий:
При извлечении структуры из класса / структуры по умолчанию указатель доступа для базового класса / структуры является открытым. При получении класса спецификатор доступа по умолчанию - private.
Например, программа 1 завершается с ошибкой компиляции, а программа 2 работает нормально.
// Program 1
#include <stdio.h>
class Base {
public:
int x;
};
class Derived : Base { }; // Is equivalent to class Derived : private Base {}
int main()
{
Derived d;
d.x = 20; // Compiler error because inheritance is private
getchar();
return 0;
}
// Program 2
#include <stdio.h>
struct Base {
public:
int x;
};
struct Derived : Base { }; // Is equivalent to struct Derived : public Base {}
int main()
{
Derived d;
d.x = 20; // Works fine because inheritance is public
getchar();
return 0;
}