const常引用

前面说的是普通引用,普通引用相当于 int * const  var 。

何为常引用? 举个栗子: int  you = 18;  const int & me = you;  常引用是让变量引用只读属性,不能通过me去修改you。

# include "iostream"
using namespace std;
void main()
{

	{      //普通引用
		int a = 10;
		int & b = a; // int * const b = &a

		//常引用
		int x = 20;
		const int & y = x;
		//y = 40;// ×  常引用让变量具有只读属性,不能通过y修改x
	}

	{
	 //常引用初始化分两种情况 
	 //1:用变量初始化常引用
	int c = 666;
	const int & d = c;

	//2:用字面量初始化常引用
	const int you = 18;       //编译器把a放在符号表中。
	//int & m = 41;        // 报错。普通引用引用一个字面量,字面量没有内存地址。
	//printf("&40:%d\n",&40);  //引用就是给内存取多个门牌号(多个别名)

	const int & me = 20;   //√
	//以下两句证明了20没有地址,但是c++编译器会给m分配内存空间/
	//printf("&20:%d\n",&20);
	//printf("&m:%d\n",&m);
    }
}


struct you
{
	char name[64];
	int age;
};
void printyou(const you & y) //C++编译器内部→ const you * const y ,变量本身和指向的内存空间都不能被修改
{
	//y.age = 28;  //× 常引用让变量只有可读属性
	printf("y.age:%d\n",y.age);
}
void main()
{
	you y1 ;
	y1.age = 18; 
	printyou(y1);
	system("pause");
}

普通引用相当于 int * const  var,常引用相当于 const  int * const var .


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值