Zanim zrozumiemy różnicę między klasą a strukturą, powinniśmy poznać kilka podstawowych pojęć z nimi związanych. Bez zrozumienia pojęć trudno jest zrozumieć różnice między nimi.
Są to dwie ważne koncepcje związane z programowaniem obiektowym i stanowią podstawę do sformułowania funkcji i danych przekazywanych do innych funkcji. Dla lepszego zrozumienia możemy skorelować go z przykładem z prawdziwego życia. Klasę można uznać za sklep, a Przedmiotem może być dowolny indywidualny, konkretny sklep, taki jak sklep spożywczy, artykuły papiernicze, owoce itp. Wszystkie przedmioty mają wspólne właściwości głównej klasy - sklep - i z kolei obiekty mogą mieć swoje własne wyłączne właściwości, takie jak określony projekt, oświetlenie itp. Poprzez obiekty możemy faktycznie korzystać z klasy; tworzą instancje klasy.
Składnia klasy
Sklep klasy
publiczne ciągi znaków;
projekt ciągów publicznych;
Składnia obiektu
Sklep spożywczy = nowy sklep ();
Store Stationery = new Store ();
Struct zawiera tylko dane, dlatego jest pomocny w tworzeniu indywidualnych wymagań dotyczących danych za pomocą obiektów Struct. W przeciwieństwie do klasy brakuje jej funkcji. Oto jego składnia:
struct grocery_entrance
char nazwa_wejścia [50];
int entrance_size;
sklep spożywczy;
Wszystkie sklepy mogą korzystać z „wejścia” Struct z indywidualnymi nazwami i rozmiarami.
Jest to podobne do sposobu, w jaki syn dziedziczy majątek ojca, a z kolei syn może również dodać kilka innych swoich rzeczy. Klasa może być klasą bazową lub pochodną, w której pierwsza może być wykorzystana jako podstawa do utworzenia drugiej. Klasa pochodna dodaje sobie kilka innych właściwości oprócz tego, co otrzymuje z klasy podstawowej. Gdy weźmiemy pod uwagę powyższy przykład, sklep spożywczy może być nadal przypisany do określonego sklepu spożywczego, takiego jak sklep spożywczy XYZ.
Teraz, gdy znamy podstawowe pojęcia, możemy przejść do faktycznej różnicy między klasą a konstrukcją.
Demo obj = new Demo ();
Oznacza to, że musimy używać słowa kluczowego „new” podczas tworzenia obiektów klasy. Nie jest to wymagane przy tworzeniu obiektów Struktur. Spójrz tylko na ich składnię:
Demo obj;
Działa idealnie nawet bez słowa kluczowego „nowy”.
Ponieważ klasy są bardziej elastyczne w przekazywaniu danych i funkcji razem, możemy to zrobić, gdy używane obiekty są złożone i duże. W naszym przykładzie centrum handlowe może użyć klasy „sklep”, aby lepiej wyrazić system. Struktury są jednak ograniczone do mniejszych obiektów, ponieważ są stosunkowo mniej skuteczne niż klasy. Dlatego jeśli projektujesz własny sklep, Struktury są lepszym wyborem.
Być może słyszałeś terminy „boks” i „rozpakowanie”, aby przekonwertować Strukturę na klasę i odwrotnie. Chociaż są to skuteczne procesy, które pomagają nam w konwersji, należy się z nimi obchodzić ostrożnie. Ponieważ ma to bezpośredni wpływ na lokalizacje pamięci, ma ogromny wpływ na wydajność naszego systemu. Ponadto wpływa na procesy usuwania śmieci i skutkuje ogólną nieefektywnością systemu. Dlatego używaj tych konwersji tylko w razie potrzeby.
Spójrzmy na wyżej wymienione różnice w formie tabelarycznej.
S.Nie | Pojęcia | Różnice | |
Klasa | Struct | ||
1 | Ponowna użyteczność | Całkowicie wielokrotnego użytku | Nie nadaje się do ponownego użycia |
2) | Widoczność | Wszystkie funkcje klasy są widoczne dla jej obiektów | Dane obiektu konstrukcji nie są widoczne dla innych obiektów tej samej konstrukcji |
3) | Przekaż odniesienie i przekaż wartość | Używa polecenia Przekaż przez odniesienie | Korzysta z funkcji przekazywania według wartości |
4 | Dziedzictwo | Funkcje klasy mogą być dziedziczone przez jej podklasy; pozwala na dziedziczenie | Nigdy nie pozwala na dziedziczenie |
5 | Domyślna widoczność | Wszyscy członkowie klasy są domyślnie prywatni | Wszyscy członkowie struktury są domyślnie publiczni |
6 | Rozmiar po opróżnieniu | Rozmiar pustej klasy wynosi 1 bajt | Rozmiar pustej struktury wynosi 0 bajtów |
7 | Zbieranie śmieci | Ponieważ używa przekazywania przez odwołanie, możliwe jest zbieranie śmieci | Ponieważ korzysta z funkcji przekazywania według, odśmiecanie nie jest możliwe |
8 | Zarządzanie pamięcią | Łatwość procesu czyszczenia pamięci pomaga w efektywnym zarządzaniu pamięcią | Brak wyrzucania elementów bezużytecznych powoduje złe zarządzanie pamięcią |
9 | Konstruktory | Pozwala konstruktorom wszystkich typów, na przykład z parametrami lub bez parametrów | Zezwala tylko na sparametryzowane konstruktory |
10 | Niszczyciele | Można go użyć | Nie można tego użyć |
11 | Inicjalizacja zmiennych członkowskich | Umożliwia bezpośrednią inicjalizację zmiennych składowych | Nie pozwala na bezpośrednią inicjalizację słów zmiennych składowych |
12 | Tworzenie obiektów | Konieczne jest użycie słowa kluczowego „new” podczas tworzenia obiektu | Opcjonalne jest użycie słowa kluczowego „new” podczas tworzenia obiektu |
13 | Kiedy użyć? | Lepsze dla większych i złożonych obiektów, w których wymagane jest dziedziczenie | Lepsze dla mniejszych i prostszych obiektów, w których dziedziczenie ma mniejsze znaczenie. |
Omówiliśmy prawie wszystkie różnice między klasą a strukturą, a jeśli uważasz, że czegoś brakuje, daj nam znać. Nauczmy się razem i jak najlepiej wykorzystaj tę wiedzę!