Co definiuje w języku C++ przedstawiony fragment kodu?
struct CONTACT { std::string nazwisko; std::string telefon; int numer; };
Pytanie z egzaminu CKE, czerwiec 2014 (arkusz E.14-X-14.05).
Słowo kluczowe struct definiuje nowy typ strukturalny, czyli własny typ danych zbudowany z kilku pól. Typ CONTACT ma trzy pola: dwa napisy (nazwisko i telefon) oraz liczbę całkowitą numer. Sama definicja nie tworzy jeszcze żadnej zmiennej - to szablon. Zmienną tego typu deklaruje się dopiero zapisem CONTACT k;, a do pól odwołuje się przez kropkę, np. k.numer = 5;. Struktura pozwala trzymać razem dane opisujące jeden obiekt, tu jeden kontakt w książce adresowej. Zwróć uwagę na średnik po nawiasie klamrowym - bez niego kompilator zgłosi błąd. W C++ struktura różni się od klasy głównie tym, że jej składowe są domyślnie publiczne.
Trzy pola w nawiasie klamrowym łatwo wziąć za trzy osobne zmienne, ale są one częścią jednego typu - każda zmienna typu CONTACT będzie miała własny komplet nazwiska, telefonu i numeru. Nie są więc niepowiązane, tylko zgrupowane. Nazwa CONTACT nie ma nic wspólnego z połączeniem zmiennych globalnych i lokalnych: o tym, czy zmienna jest globalna, decyduje miejsce jej deklaracji, a nie słowo struct. Hierarchia zmiennych też nie pasuje, bo pola struktury są sobie równorzędne i żadne nie jest nadrzędne wobec innych. Kod opisuje budowę nowego typu danych, z którego potem tworzy się zmienne, na przykład tablicę kontaktów CONTACT lista[100];. Taki zapis przydaje się wszędzie, gdzie kilka informacji opisuje jedną rzecz. Dostęp do pojedynczego pola zawsze wymaga wskazania konkretnej zmiennej, np. lista[0].numer.