Skocz do zawartości

[C++] Jaka jest różnica między std::cout a samym cout


Recommended Posts

cout znajduje się w przestrzeni nazw std.
Są dwa sposoby używania cout (i to samo się tyczy jakichkolwiek słów kluczowych znajdujących się w jakiejkolwiek przestrzeni nazw):

1. "std::cout"
2. dołączenie linii "using namespace std" na początku pliku, następnie używanie "cout" (gdybyś spróbował użyć "cout" bez zawarcia "using namespace std" to program się nie skompiluje i dostaniesz odpowiedni błąd)

Stosujesz to co ci wygodniej. Nie wiem czy w przypadku bardzo rozbudowanych projektów któreś rozwiązanie ma większą wydajność.
 

http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Przestrzen-nazw-std/10

Edytowane przez Mandalorian
Link to post
Share on other sites

Tak jak kolega wyżej napisał, są to dwa sposoby używania cout.

 

Dołączenie standardowej przestrzeni nazw std używając linii using namespace std. Pozwala Ci to na krótsze pisanie i używanie cout, cin, endl, itp. , bez wcześniejszego dodawania std:: przed tymi obiektami (std::cout, std::cin, std::endl, itp.).

Informujesz wtedy kompilator, że wszystkie obiekty, funkcje chcesz zaczerpnąć właśnie z std.

Musisz mieć jednak na uwadze, że załączasz wszystko i o ile na początku pisania małych programów nie będzie sprawiało to problemów, to później przy większych projektach, może przyczynić się to do wydajności i resposywności aplikacji. 

Istnieją również inne przestrzenie nazw specjalnie tworzone pod daną aplikację, czy przy tworzeniu gier i używanie using namespace std, może przysporzyć wielu problemów dla Ciebie, bo nie będziesz wiedział, której przestrzeni nazw użyłeś w danej chwili i tak samo dla kompilatora.

 

Jeżeli pominiesz i nie użyjesz using namespace std, będziesz zmuszony do określenia z której przestrzeni nazw kompilator ma korzystać (std::cout, std::cin, std::endl). Jeżeli zapomnisz dodać std:: i użyjesz wyłącznie cout, dostaniesz komunikat od kompilatora:

'cout' was not declared in this scope

Dla mnie właśnie ten sposób jest jak najbardziej prawidłowym, bo pozwala na zaznajomienie się co wchodzi w skład standardowej przestrzeni nazw std i ominięcie problemów, które wymieniłem wyżej przy późniejszej przygodzie z programowaniem.

 

Istnieje oczywiście jeszcze jeden sposób, w sytuacji, gdy wiesz i jesteś pewien, że przy pisaniu kodu będziesz korzystał np. tylko z cin i cout, zamiast używać using namespace std; możesz skorzystać z:

using std::cin;
using std::cout;

Różnica w powyższym zastosowaniu jest taka, że zamiast informować kompilator, że będziesz korzystał z całej biblioteki standardowej przestrzeni nazwa std (using namespace std;), określasz precyzyjnie co będzie używane. 

 

Oczywiście pomijam fakt, że już załączono standardową bibliotekę obsługującą wejście i wyjście, czyli #include <iostream> na samym początku.

Edytowane przez takapart
Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...