引用@三篇
引用分为1非const引用
2const引用
3,右值引用
引用是给对象起别名
如a的大名叫阿花,小名叫小花,不过都是表示同一个人
感觉引用有点像stringstd::string_view
变量引用在函数传参中容易改变,而且缺点是参数必须是非常量左值,有限制性
c样式的数组会缩减指针,但是引因不会
fun( int(*p)[4])会缩减
fun( int(&p)[4])不会缩减,可以直接使用size(),但是需要知道数组的大小
引用可以使代码更可读
如
程序代码:
int&p{ can.do.that}=6; p=13; 引用必须初始化有效对象,不能为NULL,并且一旦设置就不能更改,引用通常比指针安全,没有解引用null指针的风险,不过功能有限制 如果给定任务可以用引用和指针解决,不过通常首选引用 指针用在引用不足的情况下{如动态分配内存}
const 引用
const引用感觉和const指针差不多呀
也是分多种情况
1const引用(const 值的引用)常量值
const int vale = 5;
const int &rf = vale;
引用了const值
2初始化对const引用
程序代码:
int x = 6; const int &ref1 = x; // x是左值当然错了可以指出来呀 和指针一样可以从变量处更改,但是不可以引用不同对象 const int y = 7; const int &ref2 = y; //y是左值 const int &ref3 = 6;6是右值
3使用引用可以延长使用
4变量引用在函数传参中容易改变,而且缺点是参数必须是非常量左值,有限制性,可以使用常量引用传参不会更改值
void a(const int &pa)
{
pa = 63; // 不能改变了如果是变量引用就可以改变,常量引用可以传递非const左值参数,const左值参数,文字或表达式的结果:
}
比起指针或基本数据类型的变量const引用可以避免不必要的副本