一.引用做返回值
(1).函数中在堆上的或者是静态的空间
返回引用没有问题,因为栈帧的销毁不会销毁空间。
(2).函数中在栈上开辟的空间
返回引用值则有问题,原由与上述相反
二.const修饰
由const修饰的值权限只能平移或缩小,不能放大
以下错误演示(放大):
const int a = 10;
int& b = a;
以下正确演示(缩小):
int a = 10;
//int& b = a;
const int& c = a;
三.整型转换
在整型转换的时候会产生临时变量,临时变量据有常性。
int a = 1;
double d = a;
double& c = a;
语句三为错误语句
因为发生类型转换的时候会产生临时变量,等于是将一个常量赋值给了一个无const修饰的引用
四.引用底层
引用底层由指针实现,但是语法上为别名。
char a = 1;
char& d = a;
sizeof(d);
上图sizeof(d)等于1,而不是4或8。
五.c语言中的宏与c++中的inline函数对比
(1).宏
缺点
1).细节多,特别需要注意括号。
2).无法调试。
3).没有类型的检查。
优点
1).不需要开辟函数栈帧,没有内存的消耗
(2).inline函数
缺点
直接在调用函数中全部展开,如果是内容代码较多的函数,则使得调用函数的篇幅巨大,不利于运行。
优点
解决了宏的全部缺点