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

来源:互联网 发布:淘宝手机收藏链接地址 编辑:程序博客网 时间:2024/06/05 02:20

常引用就是只读引用,不能通过引用修改变量的值
用关键字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 引用初始化后,将生成一个只读变量。
原创粉丝点击