引用
1、c++引用可以看作一个已定义的变量的别名
2、引用语法:Type& name = var;
3、bool类型是c++新增的基础类型
bool类型的值只能是true或者是false
c++中的三目运算符可作为左值使用
c++中的引用可以看作变量的别名来使用
三目运算符的可能返回都是变量时,返回的是引用
eg:
int a = 4;
int& b = a;
b = 5;
引用本质的分析:
1、特殊的引用:const
在c++中可以声明const引用
const Type& name = var;
const引用让变量具有可读性
eg:
int a = 4;
const int& b = a;
int *p = (int*)&b;
b = 5;
*p = 5;
当使用 常量 对 const引用初始化时,c++编译器编译器
会为常量值分配空间,并将引用名作为这段空间的别名
注意:使用常量对const 引用初始化后会产生一个只读变量
2、引用有自己的存储空间吗??
答:有
注意:引用在C++中的内部实现中是一个指针常量
Type& name; 等价于=>Type* const name;
void f(int& a) void f(int* const a)
{ {
a = 5; *a = 5;
} }
注意:
1、c++编译器在编译的过程中用指针常量作为引用内部的实现
所以引用所占的空间大小与指针相同(引用本质就是指针)
2、从使用的角度,引用只是一个别名,c++为了实用性
而隐藏了引用的存储空间这一细节
3、功能性:可以满足大多数情况下代替指针
安全性:避免指针操作不当带来的错误
操作性:简单易用,又不失功能强大
eg:
函数返回引用:
int& demo()
{
int d= 0;
printf("demo: d = %d\n",d);
return d;
}