引用可以类比为常量指针

一个简单的例子:

class A{
public:
    A(int v): val(v), a(val){} 
    int val;
    int &a;
};
class B{
    
};
int main(){
    using std::cout;
    using std::endl;
    cout<<sizeof(A)<<" "<< sizeof(B);
}

输出结果是:8 1

通过输出结果,我们可以得到以下结论:

  • 引用在内存中也会分配空间,空间中存放的是绑定对象的地址。借用C++ primer plus中的说法,可以将引用的实现看作是一个常量指针ptr;
  • 我们对引用进行操作时,实际上都是对绑定的对象进行操作的,编译器解释为对* ptr(对象的地址)进行操作。取地址时,实际上是对绑定的对象取地址。编译器将对引用取地址解释为&(*ptr)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容