一個簡單的例子:
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);
}
輸出結(jié)果是:8 1
通過輸出結(jié)果,我們可以得到以下結(jié)論:
- 引用在內(nèi)存中也會分配空間历帚,空間中存放的是綁定對象的地址滔岳。借用C++ primer plus中的說法,可以將引用的實現(xiàn)看作是一個常量指針ptr;
- 我們對引用進行操作時挽牢,實際上都是對綁定的對象進行操作的谱煤,編譯器解釋為對* ptr(對象的地址)進行操作。取地址時禽拔,實際上是對綁定的對象取地址刘离。編譯器將對引用取地址解釋為&(*ptr)