Wyrażenie std::fstream plik("p", std::ios::out); jest deklaracją i jednoczesną inicjalizacją obiektu biblioteki standardowej C++. Typem zmiennej plik jest std::fstream, czyli strumień plikowy służący do operacji wejścia/wyjścia na plikach.
Argument "p" jest nazwą pliku przekazaną do konstruktora, a std::ios::out to flaga trybu otwarcia oznaczająca otwarcie do zapisu (wyjście). W praktyce taki obiekt wykorzystuje się jak "kanał" do zapisywania danych do pliku, np. przez operator << lub metody strumienia, a następnie zamyka się plik (jawnie lub w destruktorze).
Dlaczego pozostałe odpowiedzi są błędne?
- "typu tekstowego" – typ tekstowy w C++ kojarzy się np. z tekstem jako danymi (np. ciąg znaków), natomiast tutaj typem jest klasa strumienia plikowego, czyli obiekt do wykonywania operacji I/O.
- "typu logicznego" – typ logiczny (bool) przechowuje wartość prawda/fałsz. W deklaracji wprost widać typ std::fstream, więc nie jest to zmienna logiczna.
- "typu łańcuchowego" – łańcuch znaków (np. string) opisuje przechowywanie tekstu. Napis "p" jest tylko argumentem konstruktora (nazwą pliku), a nie definicją typu zmiennej.
Wskazana odpowiedź "plikową" należy rozumieć jako: zmienna jest związana z obsługą pliku (strumień plikowy). Na egzaminie warto patrzeć przede wszystkim na typ po lewej stronie deklaracji (tu: std::fstream) oraz na tryb otwarcia (tu: zapis).