[C++] Kilka pytań

DziewkaBezZapalek
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 7 sty 2017, o 11:28
Płeć: Kobieta
Lokalizacja: Polska

[C++] Kilka pytań

Post autor: DziewkaBezZapalek »

Witam, mam do opracowania kilkadziesiąt pytań dotyczących C++.
Czy ktoś rozgarnięty w tym temacie może ocenić poprawność moich odpowiedzi, ewentualnie podpowiedzieć gdzie jest błąd?

1.Standardowe wyjście (strumień), z którym współpracuje operator << to:
a) cin;
b) stdout;
c) cout;
d) żadna z powyższych odpowiedzi nie jest poprawna.

2.Gdy argumentem funkcji jest struktura/obiekt:
a) funkcja może zmienić oryginał struktury/obiektu;
b) funkcja może zmienić tylko kopię struktury/obiektu;
c) aby funkcja zmieniła oryginał, argumentem musi być wskaźnik do struktury/obiektu;
d) żadna z powyższych odpowiedzi nie jest poprawna.

3.Funkcje polimorficzne to:
a) funkcje o różnych nazwach i identycznych listach argumentów;
b) funkcje o identycznych nazwach i różnych listach argumentów;
c) w prototypie funkcji polimorficznej musi wystąpić słowo kluczowe „polymorphic”;
d) funkcje takie można tworzyć wyłącznie za pomocą szablonów (template).
e) żadna z powyższych odpowiedzi nie jest poprawna.

4.Konstruktor:
a) należy uaktywnić (wywołać) w sposób jawny (dodatkową instrukcją) po utworzeniu obiektu;
b) jest uaktywniany (wywoływany) niejawnie (automatycznie) w chwili tworzenia obiektu;
c) musi być zawsze zdefiniowany jawnie w definicji klasy;
d) odpowiedź c) jest błędna.

5.Klasa pochodna wyprowadzona z klasy bazowej:
a) ma dostęp do wszystkich elementów składowych klasy bazowej – prywatnych i publicznych;
b) ma dostęp do elementów publicznych, ale nie do prywatnych, klasy bazowej;
c) ma dostęp do elementów prywatnych, ale nie do publicznych, klasy bazowej;
d) musi mieć konstruktor z argumentami, jeśli klasa bazowa ma konstruktor z argumentami;
e) odpowiedź d) jest błędna;

6.Dziedziczenie wielobazowe:
a) gdy konstruktor którejś klasy bazowej ma argument(y), to i konstruktor klasy pochodnej musi mieć argumenty;
b) odpowiedź a) jest błędna;
c) dziedziczenie po wszystkich klasach bazowych musi się odbywać w identycznym trybie (private, protected, public);
d) tryby dziedziczenia mogą być różne.

7.Gdy obiekt jest argumentem funkcji:
a) do funkcji przekazywana jest kopia obiektu;
b) do funkcji przekazywany jest oryginał obiektu;
c) aby przekazać oryginał należy użyć wskaźnika;
d) aby przekazać oryginał należy użyć referencji;

e) do funkcji można przekazać tylko składniki publiczne obiektu; publiczne funkcje obiektu uaktywnione wewnątrz funkcji nie mogą oddziałać na zmienne prywatne.

8.Wskaźnik „this”:
a) jest wskaźnikiem do obiektu, który uaktywnił bieżącą funkcję składową;
b) może być użyty wyłącznie przy przeciążaniu operatorów;
c) jest wskaźnikiem do obiektu, który uaktywnił bieżącą funkcję składową, przy czym funkcja ta to tylko funkcja wirtualna;
d) jest wskaźnikiem do obiektu, który uaktywnił bieżącą funkcję składową, przy czym funkcja ta to tylko funkcja zaprzyjaźniona;
e) odpowiedzi a) – d) są błędne.

9.Referencja:
a) jest identyczna ze wskaźnikiem i składnia jej używania jest taka sama jak wskaźnika;
b) jest pewnym rodzajem wskaźnika, ale można jej używać tylko przy przeciążaniu operatorów;
c) jest pewnym rodzajem wskaźnika i można jej używać w ogólnym przypadku przekazywania oryginałów argumentów;
d) służy wyłącznie do przekazywania argumentów do funkcji wirtualnych.

10.Funkcje wirtualne:
a) mogą mieć różne prototypy – jest to inna nazwa funkcji polimorficznych;
b) muszą mieć zawsze identyczne prototypy;
c) funkcja wirtualna czysta to funkcja wirtualna bez parametrów;
d) funkcja wirtualna czysta to funkcja wirtualna poprzedzona słowem kluczowym „pure”.
e) funkcja wirtualna czysta to funkcja wirtualna niezdefiniowana w klasie bazowej.

11.Wskaźnik do klasy bazowej:
a) może wskazywać tylko elementy składowe obiektów klasy bazowej;
b) może bez żadnych dodatkowych modyfikacji wskazywać wszystkie elementy składowe obiektów klasy bazowej i pochodnej;
c) może wskazywać tylko te elementy obiektów klasy pochodnej, które są odziedziczone z klasy bazowej;
d) jak w b), ale może być niekiedy niezbędne jawne rzutowanie typu.

12.Prywatne elementy (zmienne) klasy mogą być przetwarzane przez:
a) konstruktor;
b) prywatne funkcje (metody) klasy;
c) publiczne funkcje (metody) klasy;

d) funkcje nie należące do żadnej klasy;
e) funkcje innych klas niezwiązane (nie pochodzące) z dana klasa.

13.Funkcje zaprzyjaźnione (friend):
a) maja dostęp tylko do elementów prywatnych i chronionych klasy;
b) maja dostęp tylko do elementów chronionych i publicznych klasy;
c) maja dostęp do wszystkich elementów klasy;
d) maja dostęp tylko do elementów publicznych i prywatnych.

14.Argumenty domyślne mogą występować jako:
a) tylko wszystkie;
b) początkowe;
c) końcowe;
d) w dowolnych pozycjach rozdzielone niedomyślnymi.

15.Klasa pochodna wyprowadzona z klasy bazowej:
a) musi mieć zawsze konstruktor;
b) musi mieć konstruktor, gdy klasa bazowa ma konstruktor bez parametrów;
c) musi mieć konstruktor, gdy klasa bazowa ma konstruktor z parametrami;
d) żadna z powyższych odpowiedzi nie jest poprawna.

16.Dynamiczna inicjalizacja zmiennych w C++:
a) nie jest możliwa;
b) jest możliwa, gdy zmienna jest zadeklarowana jako "dynamic";
c) jest możliwa bez specjalnego deklarowania typu zmiennej.

17.Przeciążanie operatorów binarnych (dwuargumentowych):
a) nie jest możliwe - możliwe tylko w przypadku jednoargumentowych;
b) wymaga zawsze użycia funkcji zaprzyjaźnionych (friend);
c) można używać do tego celu nie tylko funkcji zaprzyjaźnionych.

18.Funkcje wirtualne:
a) jest to inna nazwa funkcji przeciążanych;
b) musza mieć identyczne prototypy, a funkcje przeciążane nie musza;
c) nie musza mieć identycznych prototypów, a przeciążane musza;
d) nie mogą być zaprzyjaźnione z innymi klasami.

19.Operator "new" do dynamicznej alokacji pamięci:
a) nie wymaga obliczania rozmiarów alokowanej pamięci;
b) wymaga obliczania rozmiarów alokowanej pamięci;
c) może inicjalizować tylko zmienne proste;
d) może inicjalizować zmienne proste i tablice.

20.Napisy klasy string:
a) są identyczne z napisami stylu C;
b) w odróżnieniu od napisów C kończą się znakiem nowego wiersza;
c) w odróżnieniu od napisów C kończą się podwójnym 0 (nullbajt);
d) różnice są inne niż w b) i c).

21.Funkcja składowa end pojemnika wskazuje:
a) pozycję ostatniego elementu pojemnika;
b) pozycję po ostatnim elemencie pojemnika;
c) pozycję przedostatniego elementu pojemnika;
d) żadna z powyższych odpowiedzi nie jest poprawna – funkcja end służy do innych celów.

22.Publiczne elementy (zmienne) klasy mogą być przetwarzane przez:
a) konstruktor;
b) prywatne funkcje (metody) klasy;
c) publiczne funkcje (metody) klasy;
d) funkcje nie należące do żadnej klasy;
e) funkcje innych klas niezwiązane (nie pochodzące) z dana klasa.


23.Funkcja zaprzyjaźniona (friend):
a) może być zaprzyjaźniona tylko z jedną klasa;
b) może być zaprzyjaźniona z kilkoma, ale tylko abstrakcyjnymi klasami;
c) może być zaprzyjaźniona z kilkoma dowolnymi (nie tylko abstrakcyjnymi) klasami.

24.Klasa pochodna wyprowadzona z innej klasy bazowej:
a) ma zawsze dostęp do elementów prywatnych klasy bazowej;
b) ma zawsze dostęp do elementów chronionych klasy bazowej;
c) ma zawsze dostęp do elementów publicznych klasy bazowej;

d) ma dostęp do elementów prywatnych klasy bazowej, gdy wyprowadzenie ma charakter prywatny (np.: class deriv : private base {} ).

25.Obiekt pewnej klasy może być przekazany do funkcji:
a) tylko przez wartość (kopia);
b) tylko przez adres (wskaźnik, tzn. przekazywany jest oryginał);
c) obiema powyższymi metodami;
d) funkcja do której przekazuje się obiekt musi być dodatkowo zaprzyjaźniona z klasa obiektu.

26.Zmienna "this" w C++ jest:
a) wskaźnikiem do obiektu klasy bazowej używanym w obiekcie klasy pochodnej;
b) jest wskaźnikiem do danego obiektu dostępnym normalnie dla wszystkich funkcji (metod) składowych;
c) jest wskaźnikiem, którego można użyć wyłącznie przy przeciążaniu operatorów;
d) zwykła zmienna definiowana przez użytkownika, a nie słowem kluczowym języka C++.

27.Referencje w języku C++:
a) nie różnią się niczym od wskaźników języka C;
b) są identyczne ze wskaźnikami C, ale zamiast & należy używać * i odwrotnie;
c) żadne z powyższych.

28.Czysta funkcja wirtualna:
a) jest to funkcja wirtualna nie zwracająca żadnej wartości;
b) jest to funkcja wirtualna bez parametrów;
c) jest to funkcja wirtualna nie zdefiniowana w żadnej klasie;
d) jest to funkcja wirtualna tylko z parametrami domyślnymi;
e) żadne z powyższych.

29.Insertor to:
a) słowo kluczowe języka C++ deklarujące parametry wejściowe funkcji;
b) określenie oznaczające funkcje użytkownika do wyprowadzania obiektów na standardowy strumień wyjściowy (cout);
c) określenie oznaczające funkcje użytkownika do wprowadzania obiektów ze standardowego strumienia wejściowego (cin);
d) określenie oznaczające funkcje użytkownika do wyprowadzania obiektów na dowolny strumień wyjściowy;
e) określenie oznaczające funkcje użytkownika do wprowadzania obiektów z dowolnego strumienia wejściowego.

30.Porównywanie napisów string za pomocą operatorów relacyjnych:
a) litera „A” jest mniejsza od „B”, itd.;
b) zachodzi relacja odwrotna w stosunku do a);
c) litery małe (np. „a”) są mniejsze od dużych (np. „A”);
d) zachodzi relacja odwrotna w stosunku do c).

31.Operacje powodujące wystąpienie wyjątku:
a) powinny być umieszczone w bloku catch;
b) powinny być umieszczone w bloku try;
c) powinny być umieszczone w bloku exception;
d) powinny być umieszczone w bloku throw.

32.Chronione elementy (zmienne) klasy mogą być przetwarzane przez:
a) funkcje klas pochodnych wyprowadzonych w trybie public;
b) funkcje klas pochodnych wyprowadzonych w trybie private;

c) dowolne funkcje nienależące do żadnej klasy;
d) funkcje innych klas niezwiązane (nie pochodzące) z dana klasa.

33.Konstruktor:
a) w typowych przypadkach powinien być funkcją typu public;
b) może być funkcja wirtualną;
c) lista argumentów musi być zawsze pusta;
d) ma dostęp tylko do danych prywatnych.

34.Gdy argumentem funkcji jest obiekt pewnej klasy:
a) funkcja może zawsze zmienić oryginał obiektu;
b) funkcja może zmienić tylko kopię obiektu;
c) aby funkcja zmieniła oryginał, argumentem musi być wskaźnik do obiektu;
d) aby funkcja zmieniła oryginał, argumentem musi być referencja do obiektu;

e) żadna z powyższych odpowiedzi nie jest poprawna.

37.Znacznik (flaga) stanu formatowania ios::uppercase powoduje:
a) konwersje wszystkich wyprowadzanych liter w „duże”;
b) konwersje wszystkich wprowadzanych liter w „duże”;
c) użycie „dużych” liter w formacie liczbowym wykładniczym (E) i szesnastkowym (X);
d) użycie dużej litery w formacie liczbowym oktalnym (O).

38.Słowo kluczowe typename:
a) jest nową oboczna formą słowa kluczowego typedef;
b) służy do definiowania nowych typów danych użytkownika obok struktur, unii, klas;
c) może być użyte zamiast słowa kluczowego class przed parametrami we wzorcu (template);
d) może wszędzie zastąpić przestarzałe słowo class.

39.Strumień wyjściowy ostringstream napisów string:
a) jest identyczny ze strumieniem cout;
b) jest to klasa tworząca obiekty identyczne z napisami string;
c) obiekty ostringstream wymagają przetworzenia przez odpowiednią funkcje składowa w napisy string;
d) napisy string wprowadza się do obiektów ostringstream za pomocą operatorów podstawienia „=” i konkatenacji „+”;
e) napisy string wprowadza się do ostringstream za pomocą operatorów „<<”.

40.Pojemniki multiset i set:
a) jako klucza uporządkowania używają jednej z wartości przechowywanych par;
b) nie używają odrębnego klucza – kluczem jest przechowywany element;
c) są zawsze uporządkowane rosnąco;
d) są zawsze uporządkowane malejąco;
e) użytkownik może definiować sposób uporządkowania.

41.Funkcja swap w przypadku pojemników:
a) wymienia wyłącznie zawartość pojemników vector;
b) może wymieniać zawartość wszystkich pojemników;
c) wymaga jawnego utworzenia dodatkowego pojemnika do tymczasowego przechowywania wymienianych zawartości;
d) należy jej przekazać wskaźniki lub referencje do pojemników.

42.Komunikaty o błędach kierowane są do strumieni:
a) cout;
b) cerr;
c) clog;

d) cin;
e) stderr.

43.Nowe zmienne, struktury i obiekty mogą być powoływane do życia:
a) tylko na początku funkcji, przed instrukcjami czynnymi;
b) w dowolnym miejscu funkcji;
c) na samym początku bloku {}, ale nie tak jak w pkt. b);

44.Gdy argumentem funkcji jest tablica:
a) funkcja może zawsze zmienić oryginał zawartości tablicy;
b) funkcja może zmienić tylko kopię zawartości tablicy;
c) aby funkcja zmieniła oryginał, argumentem musi być wskaźnik do tablicy;
d) aby funkcja zmieniła oryginał, argumentem musi być referencja do tablicy;
e) żadna z powyższych odpowiedzi nie jest poprawna.

45.Funkcje wirtualne w przypadku dziedziczenia:
a) muszą być na każdym szczeblu (stopniu) dziedziczenia poprzedzane słowem virtual;
b) wystarczy słowo virtual w klasie bazowej;
c) funkcje wirtualne mogą być dziedziczone tylko poprzez jeden szczebel hierarchii;

46.Statyczne dane składowe klasy:
a) nie mogą być modyfikowane – są stałe;
b) istnieją nawet wtedy, gdy nie utworzono żadnego obiektu ich klasy;
c) muszą być zawsze typu private;
d) wszystkie obiekty danej klasy współdzielą jeden egzemplarz takich danych.

47.Do wymuszenia wyprowadzania liczb całkowitych w formacie szesnastkowym służy manipulator (+ ew. parametry):
a) hex;
b) showhex;
c) setbase;
d) base_hex.

48.Gdy funkcja find nie znajdzie znaku w napisie:
a) zgłasza wyjątek;
b) zwraca wartość 0;
c) zwraca wartość npos;
d) zwraca wartość max_size-1.

49.Algorytmy biblioteki standardowej:
a) są funkcjami składowymi (metodami) tylko pojemników sekwencyjnych;
b) są funkcjami składowymi (metodami) tylko pojemników skojarzeniowych;
c) są funkcjami składowymi (metodami) wszystkich rodzajów pojemników;
d) nie są funkcjami składowymi (metodami) pojemników.

50.Iterator:
a) jest uogólnionym wskaźnikiem;
b) jest narzędziem do prowadzenia obliczeń rekurencyjnych;
c) może obsługiwać wyłącznie pojemniki sekwencyjne;
d) może obsługiwać dowolne pojemniki;
d) żadna z powyższych odpowiedzi a) – d) nie jest poprawna.

51.Porównanie pojemników vector i list:
a) oba pojemniki oferują identycznie efektywny dostęp swobodny do elementów i równie efektywne wstawianie w środek sekwencji;
b) vector oferuje szybszy dostęp, ale wolniejsze wstawianie;
c) vector charakteryzuje wolniejszy dostęp, ale szybsze wstawianie;
d) vector ustępuje pojemnikowi list zarówno pod względem szybkości dostępu, jak i wstawiania;
e) vector przewyższa pojemnik list zarówno pod obu w. wym. względami.

52.Klasa string:
a) jest obsługiwana przez plik nagłówkowy string;
b) jest obsługiwana przez plik nagłówkowy cstring;
c) należy do przestrzeni nazw std;
d) należy do przestrzeni nazw str;
e) odpowiedzi c) i d) są błędne.

55.Dostęp swobodny do poszczególnych znaków w napisie string:
a) zapewnia tylko funkcja at;
b) zapewnia zarówno funkcja at, jak i operator [];
c) zapewnia tylko operator [];
d) zapewnia funkcja index i operator [];
e) zapewnia tylko funkcja index.

56.W przypadku swobodnego dostępu do znaków napisu string i próbie sięgnięcia poza napis:
a) funkcja at zgłasza wyjątek;
b) funkcja index zgłasza wyjątek;
c) operator [] zgłasza wyjątek;
d) brak jakiejkolwiek wbudowanej kontroli przekroczenia rozmiarów napisu.

59.Wyjątki i ich obsługa:
a) są użyteczne wyłącznie w programach kontaktujących się ze światem zewnętrznym (np. sterowanie urządzeniami za pomocą komputera);
b) mogą być wykorzystane w przypadku braku pamięci przydzielanej za pomocą new;
c) mogą być wykorzystane w przypadku próby dzielenia przez zero;
d) mogą być wykorzystane w przypadku wyjścia poza zakres indeksów tablicy;

e) obsługa wyjątku w procedurze catch może się odbywać wyłącznie za pomocą klas z bibliotek systemowych.

62.Przydział pamięci na pojemniki:
a) dokonywany jest zawsze jawnie za pomocą operatora new;
b) dokonywany jest zawsze jawnie za pomocą operatora malloc;
c) dokonywany jest za pomocą alokatora zawsze jawnie;
d) dokonywany jest za pomocą alokatora jawnie lub niejawnie;
e) żadna z powyższych odpowiedzi nie jest poprawna.

65.Pojemnik vector:
a) służy do przechowywania wyłącznie wektorów, tzn. wielkości mających trzy składowe i punkt (w przestrzeni trójwymiarowej) początkowy;
b) słuzy do przechowywania wyłącznie prostych typów wbudowanych (np. int, long, double);
c) służy do przechowywania wyłącznie typów wbudowanych prostych i złożonych (np. string);
d) służy do przechowywania zarówno typów wbudowanych, jak i zdefiniowanych przez użytkownika (np. struktury, klasy);
e) żadna z powyższych odpowiedzi nie jest poprawna.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Kilka pytań

Post autor: Afish »

Większość wygląda okej, ale pewności mieć nie można, co autor miał na myśli.

7 b i c wykluczają się.
10 e - niepoprawnie. Funkcja może być zdefiniowana.
11 a i c wykluczają się.
12 e - niepoprawnie, funkcje zaprzyjaźnione mają dostęp.
24 - technicznie mogę zrobić class X, class Y : private X, class Z : public Y, wtedy Z nie ma dostępu do niczego z X, więc żadna odpowiedź nie jest poprawna
28 c - zależy, co autor miał na myśli
30 - nie ma podanego kodowania znaków, więc technicznie nie da się odpowiedzieć na to pytanie
32 d - znowu zaprzyjaźnione metody
34 c i d wykluczają się
40 a i b - niepoprawnie
44 a niepoprawnie - tablica może być niezmienna
49 c d niepoprawnie. Te metody mogą pracować na dowolnych iteratorach, ale nie są ich funkcjami składowymi
DziewkaBezZapalek
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 7 sty 2017, o 11:28
Płeć: Kobieta
Lokalizacja: Polska

[C++] Kilka pytań

Post autor: DziewkaBezZapalek »

10 ? - dlaczego źle. Czysta wirtualna to właśnie z definicji niezdefiniowana, zawarta w interfejsie, która ma zostać zdefiniowana w klasach pochodnych.

11 - odpowiedz D jest poprawna?

24 - chodzi (chyba) tylko o pierwszą klasę potomną więc jest poprawnie chyba

30 - w ASCII zawsze litery duże są przed małymi

34 - przecież na oryginale można pracować i przed referencję, i przez wskaźnik

Nie tak ?
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Kilka pytań

Post autor: kalwi »

Funkcja czysto wirtualna może mieć ciało (być zdefiniowana) i jak najbardziej może być użyta.
DziewkaBezZapalek
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 7 sty 2017, o 11:28
Płeć: Kobieta
Lokalizacja: Polska

[C++] Kilka pytań

Post autor: DziewkaBezZapalek »

Metodę czysto wirtualną w języku C++ deklaruje się tak:

Kod: Zaznacz cały

 class Figura 
 {
   public:
     virtual float pole() = 0;
 };
Taka deklaracja metody wirtualnej zmusza jednocześnie do określenia metody float pole() na jednym z poziomów dziedziczenia. Nie jest możliwe pominięcie takiej implementacji. Jednocześnie taka deklaracja uniemożliwia stworzenie jakiegokolwiek obiektu klasy Figura

Więc nie rozumiem, możecie mi to wytłumaczyć lub dać jakiś przykład jeśli można zdefiniować "czysto wirtualną funkcję" ?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Kilka pytań

Post autor: Afish »

10.
11. Nie wiem, co tu ma być, dla mnie odpowiedzi są sformułowane niejasno. a i c razem się wykluczają, bo albo wskazujemy składowe klasy bazowej, albo składowe pochodnych, ale to może być kwestia intencji autora. b odpada. d jest niesprecyzowane, sugerowałoby downcasting, ale też nie ma pewności.
24. No jeżeli chodzi o pierwszą potomną, to tak, ale „klasa pochodna” oznacza dowolny poziom dziedziczenia. Znowu rozbija się o intencje autora.
30. W ASCII tak, w EBCDIC jest odwrotnie. Znowu trzeba zapytać autora, o co mu chodziło.
34. Można, ale „musi być” oznacza tylko jedną opcję. Jeżeli argument „musi być” wskaźnikiem, to nie może być referencją, jeżeli „musi być” referencją, to nie może być wskaźnikiem. Może autor użył złego sformułowania, może jest to podchwytliwe, trudno powiedzieć.

PS U mnie na uczelni wykładowca też twierdził na slajdach, że nie da się zdefiniować funkcji czysto wirtualnej, warto mieć to na uwadze na teście.
DziewkaBezZapalek
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 7 sty 2017, o 11:28
Płeć: Kobieta
Lokalizacja: Polska

[C++] Kilka pytań

Post autor: DziewkaBezZapalek »

Ok, dzięki za przykład z tą funkcją wirtualną.

A mam jeszcze takie pytanko:

Standardowe strumienie to:
W C++:
Wyjście - COUT
Wejście - CIN
Błędy - CERR/CLOG

A w C:
Wyjście - STDOUT
Wejście - STDIN
Błędy - STDERR
?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Kilka pytań

Post autor: Afish »

clog jest do logowania, niekoniecznie do błędów., reszta się zgadza.
W C++ są też odpowiedniki dla szerokich napisów, odpowiednio wcout, wcin, wcerr i wclog, ale to dygresja.
DziewkaBezZapalek
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 7 sty 2017, o 11:28
Płeć: Kobieta
Lokalizacja: Polska

[C++] Kilka pytań

Post autor: DziewkaBezZapalek »

Czyli dla C++ standardowe strumień błędów to tylko CERR, tak ?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Kilka pytań

Post autor: Afish »

Tak, clog jest standardowym strumieniem, ale logowania, a nie błędów.
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Kilka pytań

Post autor: kalwi »

Z racji, że C++ jest poniekąd nadzbiorem C, to do standardowych wyjść C++ dodałbym te z C.
DziewkaBezZapalek
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 7 sty 2017, o 11:28
Płeć: Kobieta
Lokalizacja: Polska

[C++] Kilka pytań

Post autor: DziewkaBezZapalek »

Bo zastanawia mnie to pytanie:

Standardowe wyjście (strumień), z którym współpracuje operator << to:
a) cin;
b) stdout;
c) cout;
d) żadna z powyższych odpowiedzi nie jest poprawna.

Ale "COUT" jest chyba poprawną odpowiedzią dla C++
ODPOWIEDZ