Может ли struct
быть унаследовано в C ++?
Может ли struct
быть унаследовано в C ++?
Ответы:
Да, struct
точно так же, class
за исключением того, что доступность по умолчанию public
для struct
(пока это private
для class
).
Да. Наследование по умолчанию является публичным.
Синтаксис (пример):
struct A { };
struct B : A { };
struct C : B { };
Помимо того, что Алекс и Эван уже заявили, я хотел бы добавить, что структура C ++ не похожа на структуру C.
В C ++ структура может иметь методы, наследование и т. Д., Как и класс C ++.
Конечно. В C ++ структуры и классы практически идентичны (среди небольших различий такие вещи, как дефолт по умолчанию для public вместо private).
В C ++ наследование структуры такое же, как у класса, за исключением следующих отличий:
При извлечении структуры из класса / структуры спецификатор доступа по умолчанию для базового класса / структуры является общедоступным. А при получении класса спецификатор доступа по умолчанию является закрытым.
Например, программа 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;
}