1 引用类型:引用必须用与该引用同类型的对象初始化(表示 引用类型绑定的变量是不能变的,但是对于非const引用来说,可以修改引用绑定对象的值进而修改引用的值,也可以直接修改引用的值,但不是绑定到其他对象哦;所以,设计const引用是有意义的,说明不能通过引用改变绑定的对象的值,即通过引用,可以读取但不能修改对象,只读!)。
2 const变量:const被看作编译期间的常量,定义时必须初始化
3 静态成员变量:类内声明,类外定义并初始化
ps:非const引用只能绑定到与该引用同类型的非const对象;
const引用则可以绑定到不同但却相关的类型(可转化)的对象或绑定到右值(可以是非const);
(绑定到相关类型,实际上是绑定到了用于存放对象转换后值的临时对象;绑定到右值,编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作)
(既 允许const引用绑定到需要临时变量作为媒介来完全绑定过程的值)
const修饰的关键字叫做常量,但我认为还是叫做只读变量恰当点,毕竟它和真正的右值常量还是有区别的,除了只读(即只能定义时初始化,其他任何时候不能再修改)这个限制外,和普通变量没有什么区别。
由以上可得到的结论:应该将不修改相应实参的形参定义为const引用(如果是非const引用,会毫无必要的限制了该函数的使用,因为他就无法接收可转化类型和右值类型的实参了)
pps:智能定义指向指针的引用(int* &),不允许定义指向引用的指针;
阅读(1022) | 评论(0) | 转发(0) |