C++-引用-使用场景2:常量的引用【const int& ref = 10】【使用场景:修饰形参为只读,将函数的形参定义为常量引用的好处:防止函数中意外修改数据】

 常量引用的定义格式:

const Type& ref = val;

常量引用注意:

  1. 字面量不能赋给引用,但是可以赋给const引用
  2. 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值