引用的本质剖析

来源:互联网 发布:python是面向对象语言 编辑:程序博客网 时间:2024/06/01 09:26

传智扫地僧课程学习笔记。


int const a;//会报错,提示error C2734: “a”: 如果不是外部的,则必须初始化常量对象,

int &b; //会报错,提示error C2530: “c”: 必须初始化引用,

有没有觉得很像,

引用很像一个常量,



int a = 10;

int &b = a;

cout<<&a<<endl;
cout<<&b<<endl;

打印结果是一样的,

a和b都是同一空间的门牌号,


struct test
{
char a[64]; //64
int &b; //4
int &c; //4
};

cout<<sizeof(test)<<endl;

输出值为72,

普通引用占用内存空间,与指针大小一样,

在32位机器下,改为double结果还是如此,


总结就是:常指针,

Type &name;

Type *const name;



间接赋值成立的3个条件,

1,两个变量,一个实参,一个形参,

2,实参取地址给形参,

3,形参间接修改实参,

同时也由此,可以实现接口的封装和设计,


1,2,3都写在一起的情况,有类似字符串拷贝函数,

1,2写在一起,3单独,就是函数调用,

1单独,2,3在一起,就是引用,不过2是C++编译器帮我们实现的,



0 0