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

Klasa ostream, przeciążony operator <<

Object Storage Arubacloud
0 głosów
621 wizyt
pytanie zadane 16 maja 2016 w C i C++ przez L33TT12 Gaduła (3,950 p.)
Witam, dopiero zacząłem zabawę z przeciążonymi operatorami klasy(<<,>>) no i mianowicie dlaczego do klas ostream i istream trzeba stosować referencje do argumentów?

3 odpowiedzi

+2 głosów
odpowiedź 16 maja 2016 przez Lafoniz Gaduła (4,370 p.)
// wczytanie pliku...
int x = 0;
plik >> x;

Pisząc taki kod, tak naprawdę wywołujesz metodę o nazwie operator>> dla obiektu plik z argumentem x. Jak sądzisz co by się stało ze zmienną x, gdybyśmy nie pracowali na jej oryginale (nie korzystali z referencji)?

komentarz 17 maja 2016 przez L33TT12 Gaduła (3,950 p.)
No nic by się nie stało, tylko program byłby ciut mniej wydajniejszy.
komentarz 17 maja 2016 przez Sebastian Fojcik Nałogowiec (43,040 p.)
Jeżeli przekazujesz do funkcji argument NIE przez referencję i zmienisz go tam we wnętrzu, to wartość oryginalnej zmiennej pozostanie nienaruszona, bo pracujesz na kopii
komentarz 17 maja 2016 przez L33TT12 Gaduła (3,950 p.)
przywrócone 17 maja 2016 przez L33TT12
Ale ja nie mam zamiaru edytować wartości, poprzez operator
+1 głos
odpowiedź 17 maja 2016 przez maly Nałogowiec (37,190 p.)
Bo ostream i istream nie posiadają konstruktora kopiującego a operator przypisania(=) też nie jest bezpośrednio dostępny.
0 głosów
odpowiedź 16 maja 2016 przez MetGang Nałogowiec (34,360 p.)
std::sizeof(ostream) // = 140B

Dla kodu:

std::cout<<1<<1<<1<<1<<1<<1<<1<<1<<1<<1;

Jest to stworzenie 10 tymczasowych obiektów o łącznej wadze ~1.5KB (redundancja) nie wspominając już o inicjalizacji każdego z obiektów i przekierowania ich na strumień konsoli. W skrócie, musisz operować cały czas na tym samym obiekcie bo inaczej się nie opłaca. C++ został zaprojektowany dla wydajności, więc trzymajmy się tego.

komentarz 17 maja 2016 przez L33TT12 Gaduła (3,950 p.)
Ale mi nawet nie chodzi o wydajność, bez referencji program się nie kompiluje.

Podobne pytania

0 głosów
0 odpowiedzi 164 wizyt
pytanie zadane 7 lutego 2017 w C i C++ przez czujek22 Dyskutant (7,670 p.)
0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 20 października 2016 w C i C++ przez Kasztan Dyskutant (8,080 p.)
0 głosów
1 odpowiedź 177 wizyt
pytanie zadane 20 maja 2016 w C i C++ przez L33TT12 Gaduła (3,950 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,967 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...