Pode struct
ser herdado em C ++?
Pode struct
ser herdado em C ++?
Respostas:
Sim, struct
é exatamente igual, class
exceto que a acessibilidade padrão é public
para struct
(enquanto é private
para class
).
Sim. A herança é pública por padrão.
Sintaxe (exemplo):
struct A { };
struct B : A { };
struct C : B { };
Além do que Alex e Evan já declararam, gostaria de acrescentar que uma estrutura C ++ não é como uma estrutura C.
No C ++, uma estrutura pode ter métodos, herança etc., assim como uma classe C ++.
Claro. No C ++, estruturas e classes são quase idênticas (coisas como padronizar para público em vez de privado estão entre as pequenas diferenças).
No C ++, a herança de uma estrutura é igual a uma classe, exceto as seguintes diferenças:
Ao derivar uma estrutura de uma classe / estrutura, o especificador de acesso padrão para uma classe / estrutura base é público. E ao derivar uma classe, o especificador de acesso padrão é privado.
Por exemplo, o programa 1 falha com um erro de compilação e o programa 2 funciona bem.
// 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;
}