W C ++ i innych językach, na które ma to wpływ, istnieje konstrukcja o nazwie Structure ( struct
), a inna o nazwie class
. Oba są zdolne do przechowywania funkcji i zmiennych. Niektóre różnice to:
- Klasa otrzymuje pamięć na stercie i
struct
pamięć na stosie (uwaga: jest to złe dla C ++, ale może poprawne w tym, co OP nazwał „językami wpływowymi”) - Zmienne klasy są domyślnie prywatne i
struct
są publiczne
Moje pytanie brzmi: czy w struct
jakiś sposób został porzucony dla klasy? Jeśli tak, to dlaczego? Oprócz powyższych różnic, a struct
może robić te same rzeczy, co klasa. Dlaczego więc porzucić?
c++
object-oriented
prometheuspk
źródło
źródło
Odpowiedzi:
W ogóle nie jest opuszczony. W rzeczywistości nawet nowoczesne języki, takie jak C #, które często korzystają z
class
wciąż oferowaćstruct
. Jeśli chodzi o to, kiedy warto wybrać jedną z drugiej, odsyłam do tego artykułu:Wybieranie między klasami i strukturami
Cytat z artykułu MSDN:
źródło
Mylisz się co do C ++: jedyną znaczącą różnicą między klasą a strukturą jest domyślna różnica specyfikatora dostępu. Struct i class są dla wszystkich celów i synonimami, uważam, że struct jest przechowywany w celu zapewnienia kompatybilności wstecznej z C.
źródło
język D wprowadził większe rozróżnienie między klasą a strukturą
struct in d to nic innego jak rekord danych przydzielony stosowi z niektórymi funkcjami, które można do niego wywołać (nie ma opcji dziedziczenia, chyba że użyjesz konfiguracji wyliczenia + unii, tj. samodzielnie zaimplementujesz polimorfizm), który jest przekazywany przez wartość
klasa jest taka, jak jesteśmy przyzwyczajeni do: funkcji wirtualnych, alokacji sterty, (pojedynczego) dziedziczenia, przekazywanych przez ref
źródło