C++ references
C++复杂在于提供了太多的内存模型
或者说: 提供了两种东西:
1、可以放对象的地方:
- 堆栈
- 堆
- 全局数据区里
2、提供了很多访问对象的方式
- 变量是对象
- 指针访问对象
- 引用来访问对象
3 * 3 = 9 种访问对象的方式
规则
引用一般初始化,初始值必须是变量或者左值引用
- 要求变量是local or global是必须初始化
- 若引用是类成员data,则在initialise list 中初始化
引用也是一个变量的别名,引用即建立了绑定
int x = 3;
int& y = x;
const int& z = x; // 对比 const int* z = x 不能通过z来改变x的值
z = 10 // invalid
/*
function argument
*/
void f(int& x);
f(y);
一个引用必须有一个指向的地址
void func(int & x){}
func(i * 3); // error! 不能传临时的结果
一个函数的结果是reference ,只要是reference就可以做左值
int x;
int & h() { return x ;}
h() = 16 ;