Przejdź do treści głównej
INF.04Pytanie #774 z 856dziedziczenie-i-polimorfizm

W języku C++, jaka jest kluczowa różnica między struct a class?

Opcje odpowiedzi:
A
struct nie może mieć metod, a class może.
B
struct nie obsługuje dziedziczenia, a class tak.
C
Domyślnym modyfikatorem dostępu dla składowych struct jest public, a dla class jest private.
Prawidłowa
D
Instancje struct są tworzone na stosie, a instancje class na stercie.
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: C

Uzasadnienie i szersze wyjaśnienie:

W nowoczesnym C++ funkcjonalność struct i class jest niemal identyczna. Obie mogą posiadać pola, metody, konstruktory, a także uczestniczyć w dziedziczeniu. Istnieje jednak jedna, fundamentalna różnica, która wynika z historycznych korzeni tych konstrukcji:

  • W class, jeśli nie określimy modyfikatora dostępu, wszystkie składowe (pola i metody) są domyślnie private (prywatne).
  • W struct, jeśli nie określimy modyfikatora dostępu, wszystkie składowe są domyślnie public (publiczne).

Jest to jedyna różnica narzucona przez standard języka. Konwencja nakazuje używać struct do prostych agregatów danych (bez skomplikowanej logiki), a class do tworzenia pełnoprawnych obiektów z hermetyzacją, ale z punktu widzenia kompilatora, jest to tylko kwestia domyślnego dostępu.

Dlaczego pozostałe odpowiedzi są nieprawidłowe?

  • A. struct nie może mieć metod, a class może: To nieprawda. W C++ struct może mieć metody, konstruktory i destruktory, tak samo jak class.
  • B. struct nie obsługuje dziedziczenia, a class tak: To nieprawda. W C++ struct może dziedziczyć i być klasą bazową. Różnica polega na domyślnym typie dziedziczenia (public dla struct, private dla class).
  • D. Instancje struct są tworzone na stosie, a instancje class na stercie: To nieprawda. Zarówno obiekty struct, jak i class mogą być tworzone na stosie (np. MojaKlasa obj;) lub na stercie za pomocą operatora new (np. MojaKlasa* ptr = new MojaKlasa();). Decyzja o miejscu alokacji zależy od programisty, a nie od tego, czy użyto struct czy class.

Chcesz poćwiczyć całą kwalifikację INF.04?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF04
Reklama

Podobne pytania z działu „Dziedziczenie i polimorfizm”

Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 20 pytań z tego działu.