No C ++ e em outras linguagens influenciadas, existe um construto chamado Structure ( struct
) e outro chamado the class
. Ambos são capazes de conter funções e variáveis. Algumas diferenças são:
- A classe recebe memória na pilha e
struct
recebe memória na pilha (observação: isso está errado para C ++, mas talvez correto no que o OP chamou de "linguagens influenciadas") - Variáveis de classe são privadas por padrão e
struct
são públicas
Minha pergunta é: foi de struct
alguma forma abandonada para a classe? Se sim, por quê? Além das diferenças acima, a struct
pode fazer as mesmas coisas que uma classe. Então, por que abandoná-lo?
c++
object-oriented
prometheuspk
fonte
fonte
Respostas:
Não é de todo abandonado. De fato, mesmo linguagens modernas como C #, que fazem uso pesado de
class
ainda oferecem a vocêstruct
. Quanto a quando é útil escolher um sobre o outro, refiro-lhe este artigo:Escolhendo entre classes e estruturas
Citado no artigo do MSDN:
fonte
Você está enganado sobre C ++: a única diferença significativa entre classe e estrutura é a diferença do especificador de acesso padrão. Struct e classe são sinônimos para todos os efeitos, acredito que o struct é mantido para compatibilidade retroativa com C.
fonte
a linguagem D criou uma maior distinção entre classe e estrutura
uma estrutura em d nada mais é que um registro de dados alocado por pilha com algumas funções que você pode chamar (não há opção para herança, a menos que você use uma configuração de enumeração + união, ou seja, implemente o próprio polimorfismo) que é passado por valor
uma classe é como estamos acostumados a: funções virtuais, alocação de heap, herança (única), passada por ref
fonte