int m=5;
int &n=m;
8 Years
Discussion Span
Last Post by thines01

The vale of n will be 6.
This is because any operation you do on a reference, it also acts on its referenced variable.

Please, if you have a question, don't start a thread as a code snippet, start it as a forum thread. thanx


...a reference is treated the same as the original:

int main(void)
	int m=5;
	int &n=m;
	printf("m=%d n=%d\n", m, n); // m=5 n=5
	++n; // increments BOTH n and m
	printf("m=%d n=%d\n", m, n); // m=6 n=6
	return 0;
} :
C++ references allow you to create a second name for the a variable that you can use to read or modify the original data stored in that variable. While this may not sound appealing at first, what this means is that when you declare a reference and assign it a variable, it will allow you to treat the reference exactly as though it were the original variable for the purpose of accessing and modifying the value of the original variable--even if the second name (the reference) is located within a different scope. This means, for instance, that if you make your function arguments references, and you will effectively have a way to change the original data passed into the function. This is quite different from how C++ normally works, where you have arguments to a function copied into new variables. It also allows you to dramatically reduce the amount of copying that takes place behind the scenes, both with functions and in other areas of C++, like catch clauses.

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.