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