做网站6个月心得,做网站视频上传到哪儿,邢台信息港最新招聘信息,logo标志设计图片引用可以看做是数据的一个别名#xff0c;通过这个别名和原来的名字都能够找到这份数据引用必须在定义的同时初始化#xff0c;并且以后也要从一而终#xff0c;不能再引用其它数据#xff0c;这有点类似于常量#xff08;const 变量#xff09;。引用变量 里面 实际存储…引用可以看做是数据的一个别名通过这个别名和原来的名字都能够找到这份数据引用必须在定义的同时初始化并且以后也要从一而终不能再引用其它数据这有点类似于常量const 变量。引用变量 里面 实际存储的 内容实际上 是 所引用数据的地址, 但是直接使用的引用变量的话 却使用的是所指代的数据. 比如以下代码
int a 10;
int r a;
cout a endl; // 10
cout r endl; // 10
cout a endl;
cout r endl; // 通过打印结果可以看出来a与r是一样的。
// 实际上内存模型 并不是这样的。
// 使用r取地址时编译器会对代码进行隐式的转换使得代码输出的是 r 的内容a 的地址而不是 r 的地址这就是为什么获取不到引用变量的地址的原因。也就是说不是变量 r 不占用内存而是编译器不让获取它的地址。
引用变量r 里面存储的内容时 变量 a的地址。还有一儿例子可以证明请看如下代码
#include iostreamusing namespace std;
int num 99;
class A {
public:A();
private:int n;int r;int rr;int rrr;
};
A::A() : n(0), r(num) , rr(r), rrr(rr){}
int main() {A *a new A();cout sizeof(A) endl; //输出A类型的大小cout hex *((int*)a 1) endl; //输出r本身的内容cout hex num endl; //输出num变量的地址cout hex *((int *)a 2) endl;cout hex *((int *)a 3) endl;return 0;
}输出结果为
16
130b000
0130B000
130b000
130b000简单来说 再举个简单的例子
int a 3;
int r a;
int rr r;
int rrr rr;r 与 rr 与 rrr 这三个引用变量里面存储的值 实际上 都是 a的地址。