1.一个名字表示“内存中是什么东西”,这即是最简单最基本的“对象”的概念,对象就是“内存中一片连续的区域”,不要与类对象的高级概念相 混淆.
2.引用就是对象的别名,在声明引用时必须对它初始化,此后它只能从一而终,不能再引用其他的对象了.
int& r=i; r=j;的含义是把j的值赋给i,而不是讲r引用j.
如果 int& r = i; 那么&r将返回i的地址.
引用的一种实现方式是把它作为一个常量指针,在每次使用它的时候都自动地做间接访问.在某些情况下,编译器可以通过优化去掉引用,使得在 执行时根本不存在任何表示引用的东西.
引用的初始式是一个左值,引用的类型和初始式值类型不同时会做隐式类型转换.对于一个const T&的初始式不要求一定为左值,在这种情况下:
首先,如果需要将做隐式类型转换.
然后,将结果存入一个类型T的临时变量.
最后,将此临时变量用做初始式的值.
考虑 const double& cdr = 1;
它的解释是,double temp = double(1); const double &cdr = temp;
引用的引用的作用和引用一样,对他们的操作都作用于被引用的对象。
3.使用引用做函数的参数与返回值的效果等同指针.
但要注意使用返回值为引用的函数,对返回值的操作结果都将作用于引用的对象上.
ps:
声明与定义的区别在于定义除了给对象起个名字在外(声明的功能),该名字还关联到了引用实体.
左值就是引用某个对象的表达式.