W C++ deklaracja klasy pochodnej zawiera po nazwie klasy znak dwukropka oraz listę klas bazowych wraz ze specyfikatorami dostępu, np. class D : public A, public B. Taki zapis oznacza, że tworzona jest klasa pochodna (D), która dziedziczy po dwóch klasach bazowych (A i B). Jest to klasyczny przykład wielodziedziczenia.
Odpowiedź "klasy pochodnej na podstawie dwóch klas bazowych." jest więc poprawna, bo opisuje dokładnie sens składni: jedna nowa klasa przejmuje (zgodnie z regułami C++) składowe i zachowania klas bazowych oraz może je rozszerzać lub przesłaniać.
Dlaczego pozostałe propozycje są błędne:
- "klasy współpracującej z dwoma innymi klasami." – współpraca/asocjacja/kompozycja w OOP nie jest wyrażana dwukropkiem i listą baz w deklaracji klasy. Tego typu relacje wynikają zwykle z pól składowych (np. obiekt jako członek) albo parametrów/metod, a nie z listy dziedziczenia.
- "obiektu z dwiema składowymi publicznymi." – obiekt to instancja klasy tworzona np. przez wywołanie konstruktora lub deklarację zmiennej danego typu. Zapis dziedziczenia dotyczy definicji typu (klasy), a nie tworzenia instancji, ani nie przesądza o liczbie składowych.
- "dwóch publicznych obiektów." – w C++ specyfikator "public" w kontekście dwukropka po nazwie klasy odnosi się do trybu dziedziczenia, a nie do "publiczności" obiektów. Ponadto sam zapis dziedziczenia nie tworzy dwóch obiektów.
Wskazówka egzaminacyjna: gdy widzisz po nazwie klasy dwukropek i listę nazw typów, myśl "dziedziczenie", a gdy widzisz pola składowe lub tworzenie zmiennych – dopiero wtedy rozważasz kompozycję albo instancje (obiekty).