2013-03-13 15 views
10

W przykładach, które widziałem argumenty były przekazywane przez referencję w następujący sposób:Gdzie ampersand "&" można wstawić, przekazując argument przez odniesienie?

void AddOne(int &y) 

W kodzie, że mam widzę następującą składnię:

void AddOne(int& y) 

Zastanawiam się, czy jest to ten sam lub drugi przypadek różni się nieco od pierwszego.

+6

Białe spacje w C++ nie mają znaczenia. Możesz zrobić "void AddOne (int & y)", jeśli chcesz. – chris

+2

@chris: To nie jest dokładnie prawda. 'unsignedint' i' unsigned int' to różne sekwencje tokenów. Ale kod pokazany w tym pytaniu nie różni się w tokenach. –

+1

Co jest warte, myślę, że druga opcja jest bardziej przejrzysta; 'int &' to typ 'y'. – JSQuareD

Odpowiedz

17

Oba są dokładnie samo. Bez żadnej różnicy.

Liczy się, że & powinno być pomiędzy typu i zmiennej nazwy . Przestrzenie nie mają znaczenia.

Więc

void AddOne(int& y); 
void AddOne(int &y); 
void AddOne(int & y) 
void AddOne(int &  y); 
void AddOne(int&y); 

są takie same!

+3

oraz 'int & y' (bez spacji). –

+1

@BenVoigt: Yup. – Nawaz

0

Nie ma różnic między

void AddOne(int &y); 

i

void AddOne(int& y); 

a nawet

void AddOne(int&y); 

w C++, ponieważ odstępy pomiędzy faktycznym tokeny są odrzucane.