• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

czym się rózni cout od std;;cout

VPS Starter Arubacloud
+3 głosów
911 wizyt
pytanie zadane 17 października 2021 w C i C++ przez <młody_programista> Początkujący (450 p.)

Witam ostatnio patrzę na inne kod i praktycznie każdy używa std::cout a ja cout<< i czy ktoś wie jaka jest różnica ? optymalizacja kodu ? lepsza czytelność   ? 

3 odpowiedzi

+3 głosów
odpowiedź 17 października 2021 przez profesorek96 Szeryf (91,420 p.)
wybrane 23 października 2021 przez <młody_programista>
 
Najlepsza

Zapis std::cout od zapisu cout nie różni się niczym. Oczywiście mówimy o przypadku kiedy ktoś korzysta z standardowej przestrzeni nazw zwanej std. Na początku pliku pojawia się linia using namespace std;.

Zacznijmy od tego że język C++ jest językiem pozwalającym na programowanie obiektowe. Obiekty czyli abstrakcyjne byty powstają według przepisu zwanego klasą. Domyślnie każda klasa pozwala na stworzenie wielu obiektów. Klasę można też rozumieć jako przepis na stworzenie nowego typu danych. Klasa może posiadać zmienne zwane polami oraz funkcje zwane metodami. Każda klasa w naszym programie powinna mieć swoją unikalną nazwę.  Jest to niestety duże ograniczenie, duże projekty zawierają setki jak, nie tysiące klas. Więc skąd brać unikalne nazwy. Problem ten rozwiązuje właśnie coś takiego jak przestrzeń nazw. Jest to swego rodzaju worek do którego można włożyć wiele klas. W obrębie jednej przestrzeni nazw nazwy klas nie mogą się powtarzać, natomiast nic nie stoi na przeszkodzie by w innej przestrzeni nazwie była klasa o takiej samej nazwie. Zobacz na przykład:

#include <iostream>
using namespace std;
namespace moje1
{
	class Klasa
	{
		public:
		Klasa()
		{
			cout<<"Moja klasa z przestrzeni moja1"<<endl;
		}
	};
};

namespace moje2
{
	class Klasa
	{
		public:
		Klasa()
		{
			cout<<"Moja klasa z przestrzeni moja2"<<endl;
		}
	};
};

int main() {
	moje1::Klasa A;
	moje2::Klasa B;
	return 0;
}

Zwróć uwagę, że mamy klasę o tej samej nazwie zarówno w przestrzeni nazw moje1 oraz moje2. Tworząc obiekt musimy najpierw wpisać nazwę przestrzeni, następnie użyć operatora zakresu (::) oraz podać nazwę klasy jakiej obiekt chcemy stworzyć.

Przestrzeń std to standardowa przestrzeń stworzona przez twórców języka C++. Twórcy wrzucili do niej między innymi klasę string pozwalającą na operację na napisach. Nic nie stoi na przeszkodzie by stworzyć sobie własną klasę o nazwie string. W większych programach zaleca się nie stosowanie using namespace std lecz używanie nazwy przestrzeni oraz operatora zakresu. Dzięki temu zapisowi od razu widzimy co jest z jakiej przestrzeni nazw pochodzi, zwiększa ona czytelność kodu.

Dodam że odpowiednikiem przestrzeni nazw w Javie są pakiety.

+1 głos
odpowiedź 17 października 2021 przez Utlamo Obywatel (1,540 p.)
Obie fukcje ta ta sama rzecz ale:

std::cout → to std to przestrzeń nazw
cout działa tylko i wyłącznie jak użyjesz using namespace std;
using namespace std; → wpisz std:: przed każdą komendą jak nie działa to usuń

Jedni mówią że używanie tego to zbrodnia inni że po coś to powstało :P
To std:: służy w momencie kiedy masz 2 biblioteki które mają funkcję cout
czyli std to znany ci cout i na przykład jakaś biblioteka display która wyświetlała by ci w grze na ekranie napis a nie w konsoli też mogła mieć cout.
wtedy do konsoli piszesz std::cout a do gry przestrzengry::cout
+1 głos
odpowiedź 17 października 2021 przez VBService Ekspert (251,210 p.)
edycja 17 października 2021 przez VBService

Po pierwsze w tytule masz błąd, powinny być dwukropki a nie średniki.  wink

Treść tego artykułu powinna wiele wyjaśnić: Przestrzeń nazw std

 

 

P.S. Namespaces in C++

 

[ on-line ]

#include <iostream>

namespace using_namespace_std {
   void write_to_console() {
      using namespace std;
      cout << "Uzywam: using namespace std" << endl;
   }
}

namespace without_using_namespace_std {
   void write_to_console() {
      std::cout << "Uzywam: std::..." << std::endl;
   }
}

int main () {

   using_namespace_std::write_to_console();
   without_using_namespace_std::write_to_console(); 

   return 0;
}

 

"Najpiękniejsze w obiektowości C++ jest to, że nie trzeba wcale z niej korzystać".

Podobne pytania

0 głosów
2 odpowiedzi 774 wizyt
pytanie zadane 17 stycznia 2016 w C i C++ przez Munvik Dyskutant (9,350 p.)
0 głosów
2 odpowiedzi 1,179 wizyt
0 głosów
3 odpowiedzi 4,681 wizyt

92,452 zapytań

141,262 odpowiedzi

319,080 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...