Logo pl.removalsclassifieds.com

Różnica między klasą a strukturą (z tabelą)

Spisu treści:

Anonim

Pytanie, czy użyć klasy, czy struktury, jest powszechne wśród programistów C++ podczas projektowania kodu. Wśród najmłodszych programistów istnieje chmura nieporozumień dotyczących technicznej różnicy między klasą a strukturą. Nawet po zrozumieniu różnic programiści czasami nie zgadzają się co do bardziej odpowiedniego kodu.

W.NET istnieją zasadniczo dwie kategorie rodzajów: klasa, która jest typem referencyjnym, a struktura jest typem wartości. Typ referencyjny żyje głównie na stercie, podczas gdy typ wartościowy żyje w linii. Kilka innych różnic można wyjaśnić w tym artykule.

Klasa a struktura

Główną różnicą między class i struct jest to, że class są typem referencyjnym, który jest alokowany na stercie, a także garbage collection. Z drugiej strony, struktura jest typem wartości, który jest alokowany w linii lub na stosie w typach zawierających.

Klasa obecna w C++ jest dość podobna do struktury C. Składa się z listy członków danych i zestawu operacji zwykle wykonywanych na klasie. Można powiedzieć, że w programowaniu obiektowym budulcem jest klasa. Klasa jest również podobna do planu obiektu.

Struktura to typ danych typu wartości. Pomaga, aby pojedyncza zmienna zawierała połączone dane kilku typów. Podczas tworzenia struktury używane jest słowo kluczowe „struct”. Gdy obiekt struktury jest tworzony przy użyciu operatora new, wywoływany jest odpowiedni konstruktor i zostaje utworzony.

Tabela porównawcza między klasą a strukturą

Parametry porównania Klasa Struktura
Widoczność domyślna Prywatny Publiczny
Rozmiar, gdy jest pusty 1 bajt 0 bajtów
Inicjalizacja zmiennych składowych Pozwala Nie zezwala
Zbieranie śmieci Możliwe, ponieważ używa przekazywania przez odniesienie Niemożliwe, ponieważ używa przekazywania przez wartość
Możliwość ponownego wykorzystania Całkowicie Nie

Czym jest klasa?

W programowaniu w języku C++ klasa jest strukturą danych lub typem zdefiniowanym przez użytkownika, którego członkami są funkcje i dane. Domyślny dostęp jest prywatny dla członków klasy C++. Prywatni członkowie nie uzyskują dostępu poza klasą i można uzyskać do nich dostęp tylko za pomocą metod klasy. Dziedziczenie jest dozwolone w klasie, ponieważ jego funkcja może być dziedziczona przez jej podklasy

Instancje typu danych klasy są nazywane obiektami. Może zawierać funkcje składowe, przeciążone operatory i stałe zmienne zdefiniowane przez programistę. Za pomocą szablonów klas można wygenerować deklarację klasy. Te szablony klas reprezentują rodzinę klas.

Deklaracja rzeczywistej klasy jest uzyskiwana przez tworzenie instancji szablonu z jednym lub większą liczbą argumentów szablonu. Specjalizacja szablonu jest definiowana jako instancja szablonu z określonym zestawem argumentów. Składnia C++ stara się, aby każdy aspekt struktury wyglądał tak, jak w przypadku podstawowych typów danych.

Klasy C++ mają swoich członków. Członkowie klas są deklarowani jako prywatnie lub publicznie dostępni odpowiednio przez specyfikatory. Po specyfikatorze, jeśli napotkany element członkowski będzie miał skojarzony dostęp, chyba że napotkany zostanie inny specyfikator.

Co to jest struktura?

Jednym słowem, struktura na ogół oznacza pakiet. Jest to kilka powiązanych ze sobą elementów, które muszą być ze sobą powiązane w kontekście w określony sposób. Ten rodzaj kontekstu może polegać na przekazywaniu do funkcji liczby ograniczonej argumentami.

Z punktu widzenia języka programowania C jest to deklaracja złożonego typu danych. Ogólnie definiuje listę zmiennych fizycznych zgrupowanych pod jedną nazwą w bloku pamięci. Pozwala na dostęp do różnych zmiennych poprzez pojedynczy punkt lub przez zadeklarowaną nazwę struktury, która zwraca adres, który jest taki sam.

Struktura może zawierać inne typy danych, dzięki czemu może być używana do rekordów o mieszanym typie danych lub innych mieszanych typach danych. W C odwołuje się do ciągłego bloku pamięci fizycznej, zazwyczaj ograniczonego granicami długości słowa. W rezultacie każde pole znajduje się od samego początku w stałym określonym przesunięciu.

Jeśli chodzi o język C++, struktura jest podobna do klasy C++, ale domyślna widoczność jest zupełnie inna. Może być alokowany dynamicznie lub statycznie na stercie lub stosie z wyraźnym wskaźnikiem. Domyślna widoczność struktury w C++ jest prywatna.

Główne różnice między klasą a strukturą

Wniosek

Można stwierdzić, że zarówno klasa, jak i struktura są wspólne dla programistów C++. Klasa jest typem referencyjnym, który jest alokowany na stercie, a także odśmiecaniu. Z drugiej strony struktura jest typem wartości, który jest alokowany w wierszu lub na stosie w typach zawierających.

Jeśli chodzi o widoczność, domyślna widoczność jest prywatna w klasie, podczas gdy jest publiczna w strukturze. Odśmiecanie jest możliwe w klasie, ponieważ wykorzystuje przekazywanie przez referencję. Z drugiej strony w strukturze wyrzucanie elementów bezużytecznych nie jest możliwe, ponieważ używa wartości przekazywanej przez. Rozmiar klasy wynosi 1 bajt, gdy jest pusta, natomiast w przypadku trafienia wynosi 0 bajtów.

Bibliografia

Różnica między klasą a strukturą (z tabelą)