常量引用的定义格式:
const Type& ref = val; |
常量引用注意:
- 字面量不能赋给引用,但是可以赋给const引用
- const修饰的引用,不能修改。
void test01(){ int a = 100; const int& aRef = a; //此时aRef就是a //aRef = 200; 不能通过aRef的值 a = 100; //OK cout << "a:" << a << endl; cout << "aRef:" << aRef << endl; } void test02(){ //不能把一个字面量赋给引用 //int& ref = 100; //但是可以把一个字面量赋给常引用 const int& ref = 100; //int temp = 200; const int& ret = temp; } |
[const引用使用场景] 常量引用主要用在函数的形参,尤其是类的拷贝/复制构造函数。 将函数的形参定义为常量引用的好处:
如果希望实参随着形参的改变而改变,那么使用一般的引用,如果不希望实参随着形参改变,那么使用常引用。 |
//const int& param防止函数中意外修改数据 void ShowVal(const int& param){ cout << "param:" << param << endl; } |
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
void test01()
{
//int &ref = 10;//引用了不合法的内存,不可以
const int &ref = 10; //加入const后 ,编译器处理方式为: int tmp = 10; const int &ref = tmp;
//ref = 10; // 不能直接修改
// 可通过指针修改
int * p = (int*)&ref;
*p = 1000;
cout << "ref = " << ref << endl;
}
int main(){
test01();
system("pause");
return EXIT_SUCCESS;
}
常量引用使用场景:用来修饰形参
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
//常量引用使用场景 用来修饰形参
void showValue(const int &val)
{
//val += 1000; //如果只是想显示内容,而不修改内容,那么就用const修饰这个形参
cout << "val = " << val << endl;
}
void test02()
{
int a = 10;
showValue(a);
}
int main(){
test02();
system("pause");
return EXIT_SUCCESS;
}