c++中的const,即常引用

1  常引用初始化的情况:

    (1)  用变量进行初始化,代码如下

            

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

   (2) 用常量进行初始化,代码如下:

           

int &m = 41;

   上面这句话在c++编译器中是会报错的,因为引用是变量(内存)的别名,即其是指向一个内存地址空间的,而41是一个字面量,没有地址空间,所以报错。而下面的代码,可以编译通过:

   

const int &m = 43;  //c++编译器会为m分配内存空间 ,然后让这个引用的指针指向这个m的内存空间,所以这句话会编译通过

    这是因为用了const修饰,c++首先会为字面量分配内存空间,然后将引用作为这段内存空间的别名

   

(2)  特殊类型做引用,代码如下:

     

struct Teacher
{
	char name[64];
	int age ;
};


//void printTeacher(const Teacher  * const myt)
void printTeacher(const Teacher &myt)
{
	//常引用 让 实参变量 拥有只读属性 
	//myt.age = 33;   //这句话会编译不通过
	printf("myt.age:%d \n", myt.age);	
}

void main()
{
	Teacher  t1;
	t1.age = 36;
	printTeacher(t1);
	cout<<"hello..."<<endl;
	system("pause");
	return ;
}

   

(3)  总结

       1. const int & e相当于 const int * const e。

       2. 普通引用 int & a相当于 int * const a, 即常指针。

       3. 当使用常量(字面量)对const引用进行初始化时,c++编译器会为常量值分配空间,并将引用名作为这段空间的别名。

       4. 使用字面量对const引用初始化,将生成一个只读变量。

      

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值