博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++中的const,即常引用
阅读量:4212 次
发布时间:2019-05-26

本文共 819 字,大约阅读时间需要 2 分钟。

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..."<

   

(3)  总结

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

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

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

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

      

 

 

转载地址:http://zhzmi.baihongyu.com/

你可能感兴趣的文章
mysql myisam optimize任务
查看>>
myisamchk命令使用总结
查看>>
report server tempdb 过大问题
查看>>
sql server时间戳timestamp
查看>>
mysql 添加时间戳
查看>>
为什么在WinXP系统上无法安装SQL2000的服务器组件?
查看>>
Pentaho 之Schame workbench入门实例
查看>>
pentaho 示例Cube配置详解(SQL Server版本)
查看>>
SQLSERVER数据库管理员的专用连接DAC
查看>>
SQL Server 2008中Service Broker基础应用(上)
查看>>
新下载kettle不能启动问题
查看>>
mysql sp
查看>>
SELECT ... FOR UPDATE LOCK IN SHARE MOD
查看>>
恢复oracle数据到以前的某个时间点
查看>>
mysql kettle 分页
查看>>
mongoDB 入门指南、示例
查看>>
不存在插入的一种写法
查看>>
p_vipshop_to_actual_day_shop_sale
查看>>
写MySQL存储过程实现动态执行SQL
查看>>
P_sync_etl_mid_data
查看>>