Può struct
essere ereditato in C ++?
Può struct
essere ereditato in C ++?
Risposte:
Sì, struct
è esattamente come class
tranne l'accessibilità di default è public
per struct
(mentre è private
per class
).
Sì. L'eredità è pubblica per impostazione predefinita.
Sintassi (esempio):
struct A { };
struct B : A { };
struct C : B { };
A parte ciò che Alex ed Evan hanno già affermato, vorrei aggiungere che una struttura C ++ non è come una struttura C.
In C ++, una struttura può avere metodi, ereditarietà, ecc. Proprio come una classe C ++.
Ovviamente. In C ++, le strutture e le classi sono quasi identiche (cose come il default su public anziché private sono tra le piccole differenze).
In C ++, l'eredità di una struttura è la stessa di una classe tranne le seguenti differenze:
Quando si ricava una struttura da una classe / struttura, l'identificatore di accesso predefinito per una classe / struttura di base è pubblico. E quando deriva una classe, l'identificatore di accesso predefinito è privato.
Ad esempio, il programma 1 ha esito negativo con un errore di compilazione e il programma 2 funziona correttamente.
// 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;
}