2009-10-15 10 views

Odpowiedz

12

W takim przypadku są Zwracanie referencji do obiektu ostream. Ścisłe myślenie o ampersand jako "adres" nie zawsze będzie dla ciebie skuteczne. Here - niektóre informacje z C++ FAQ Lite na temat referencji.

Jeśli chodzi o const, poprawność const jest bardzo ważna w bezpieczeństwie typu C++ i coś, co chcesz zrobić, jak tylko możesz. Kolejny page z FAQ pomaga w tym zakresie. const pomaga ci w zmianach związanych ze skutkami ubocznymi fałszowania danych w sytuacjach, w których możesz tego nie oczekiwać.

3

Oznacza to, że zmienna jest odniesieniem. To trochę jak wskaźnik, ale nie do końca.

Patrz: Reference (C++)

3

deklaracji typu w C++, Ampersand oznacza "odniesienia". W tym przypadku operator << zwraca odniesienie do obiektu ostream.

Ponieważ faktycznie zwraca *this to faktycznie taka sama ostream obiektu, a oznacza możliwość połączenia łańcuch operator <<, podobne do tego:

os << "Hello" << " " << "World" << endl; 
+1

"Operator <<" większość programistów spotyka się z implementacją funkcji bezpłatnych, a nie funkcji składowych, więc nie ma w tym celu "tego". – sbi

6

W zależności od kontekstu znaku ampersand może to oznaczać dwie różne rzeczy. Odpowiedź na konkretne pytanie brzmi, że jest to odniesienie, a nie "adres". Są to bardzo różne rzeczy. Bardzo ważne jest, aby zrozumieć różnicę.

C++ Reference

Powodem aby parametry const jest zapewnienie, że nie są one zmieniane przez funkcję. Gwarantuje to wywołującemu funkcję, że parametry, które przekazują, nie zostaną zmienione.

+0

Kiedy używasz znaku ampersand na "normalnej" zmiennej, przenosisz adres zmiennej do pamięci - tak właśnie miał na myśli Omar. W przypadku odniesień, & ma jednak inne znaczenie. – Jesper

+0

Jesper, masz rację. Zaktualizowałem swoją odpowiedź, aby dokonać rozróżnienia. – nathan

Powiązane problemy