0
点赞
收藏
分享

微信扫一扫

C++15——引用(reference)

金牛豆豆 2022-03-12 阅读 68
char c;	//字符
char *p=&c;	//指针
char &r=c;	//引用,在定义时需要有初始值(变量或者是可以做左值的东西),定义时必须初始化
//r是c的别名
//作为参数表或者成员变量可以没有初始值,但是本地变量或者全局变量必须有初始值
int x=47;
int &y=x;
cout<<"y="<<y;	//y=47
y=18;
cout<<"x="x;	//x=18
int x=3;
int &y=x;
const int &z=x;//z是x的别名,但是通过z不能修改x,但是x可以改变,z不能做左值,可以改变x,变完x,z相应的也就变了

void f(int& x);
f(y);
//在f(int& x)里对x进行修改,y就改变了
int &y=x;
y=12;//对

void func(int &);
func(i*3);   //错误,i*3没有地址存放,会报错
int* f(int* x){
	(*x)++;
    return x;  //正确
}

int& g(int& x){
    x++;
    return x;   //正确
}
//int g(int x){...}  编译会报错,调用时都一样,无法重载

int x;//全局变量

int& h(){
    int q;
    return q;//q是本地变量,报错
    //指针返回本地变量地址也会报错
    return x;//正确,x是全局变量
}
int main(){
    int a=0;
    f(&a);//a=1
    g(a);//a=2
    h()=16;//h()返回的是引用,可以做左值,放在左边,接受赋值,实际上是x变为16
    *k()=10;
}
  • 引用不可以为null;指针可以为null

  • 引用依赖于绑定的初始值,不可以改变;指针可以更改指向的值

  • 引用依赖于已经存在的变量;指针独立于已经存在的对象

引用是基于const 指针实现的,引用引用原因:美观

引用的实质是指针。

引用不能做引用之间的赋值。

int x;
int &a=x;
int &b=a;//报错

int &b=x;//正确
int x;
int y;
int &a=x;
int &b=y;
b=a;//实际上是y=x;
  • 引用不能绑定引用

  • 不能指针指向引用,但是引用可以绑定指针

int&* p;//错误
void f(int* &p;)//正确
  • 数组中不能使用引用,reference不是实体,没有reference的数组

举报

相关推荐

0 条评论