Наследование структуры в С++ - программирование

Наследование структуры в С++

Может ли struct наследоваться в С++?

4b9b3361

Ответ 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;
}