C++引用的内部机制,及于指针的区别

来源:互联网 发布:mysql和mariadb兼容性 编辑:程序博客网 时间:2024/05/16 14:55

引用在内部存放的是一个对象的地址,它是该对象的别名。对于不可寻址的值以及不同类型的对象,编译器为了实现引用,必须生成一个临时对象,引用实际上指向该临时对象,用户不能访问它。若此时我们修改引用的值,实际上修改的是临时变量的值,不会修改用来初始化引用的那个对象的值。

--引用《C++ primer中文版》

 

例子:

将地址运算符作用于引用:
     #include <iostream>
     using namespace std;
    
     int main()
     {
           int a=2;
           int& r_a=a;
 
           cout<<"&a="<<&a<<endl;
           cout<<"&r_a="<<&r_a<<endl;
          
           return 0;
     }
运行结果:
&a=0x22ff74
&r_a=0x22ff74
请按任意键继续. . .

 

指针与引用的区别:

    (1)引用必须总指向一个对象,而指针可以为NULL,表示该指针不指向任何对象;
    (2)如果用一个引用给另一个引用赋值,那么改变的是被引用的对象,而不是引用本身,换句话说,引用一旦被初始化指向某个对象,则该引用不会再去指向其他对象;而指针不同,指针之间赋值改变的是指针本身。

 

什么情况使用引用、指针:

在以下情况下你应该使用指针,一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空),二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。

原创粉丝点击