您的位置:首页 > 其它

常引用,const引用的案例,以及常引用作函数参数

2017-09-19 02:07 429 查看
常引用就是只读引用,不能通过引用修改变量的值

用关键字const修饰:

//引用分为常引用和普通引用

#include <iostream>
using namespace std;

//常引用作函数参数:

int main()
{
//普通引用
int a=10;
int &b=a;
b=20;
cout<<"a="<<a<<"b="<<b<<endl;

//常引用
int x=20;
const int &y = x;
//y=30;错误,因为为只读引用
//常引用,让变量拥有只读属性,不能通过y来修改x
cout<<"y="<<y<<"x="<<x<<endl;

//常引用的初始化
//1.用变量初始化常量引用

{
int x1=20;
const int &y1=x1;//用x1去初始化常引用
}

//2.用字面量初始化常量引用
{
const int a=10; //c++编译器将a放入符号表中
//int &m = 41;    //普通引用,引用一个字面量,字面量没有内存地址,所以其别名,是错误的
const int &m=10;//引用就是给内存其别名,去多个门牌号
//偷偷的给m分配一个空间
}

return 0;
}


常量引用与普通引用的实例;

常量引用作函数形参

#include <iostream>
#include <stdlib.h>
using namespace std;
//函数返回值作左值

//指针的引用
//回忆二级指针

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

//在被调用函数获取资源
//*p=&tp1

//函数指针作参数:在被调用函数里面给指针分配内存

void getTeacher(const Teacher &myt)
{

cout<<myt.age<<endl;//只能使用
//  tmp->age=33;       //不能修改
//p是实参的地址,*实参的地址 去间接的,去间接的修改实参的值
//将tmp的值赋给*p

}

int main(int argc,char *argv[])
{

//实参的值为空,在栈区分配  tp1是一个地址。
Teacher  t1;
t1.age=23;
//常引用让变量有只读属性
getTeacher(t1);          //将地址的地址传入进去

return 0;
}

//const &e 相当于const int *const e;
//普通引用相当于 int * const e1;
//当使用常量(字面量)对const引用的进行初始化时,c++编译器会为常量分配空间;
//使用字面量对const 引用初始化后,将生成一个只读变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  常引用-const引
相关文章推荐