&类型和const&作为返回类型的区别:
1.引用类型作为返回类型
一.可以作为左值(可以对其赋值),如果返回值没有&则不不能作为左值
二.省去拷贝构造,加快效率(还没有验证)
2.cosnt&做为返回类型
一.不能作为左值
左值:左值必须应该是一个变量或者是表达式等,但是它的物理位置是可以确定的,即编译器能确定其所在内存的地址
右值:可确定或不确定均可
自增(++)或自减(--)不能作为左值
3.const作为变量或参数
一.作为参数时
1.指针类型
例如const char *p
则不能对指针所指向的内容改变
若为char *const p
则不能改变指针的指向,即指针变量p的值
2.非指针类型
不能改变其值
例如 void Fun(const int nNum){nNum = 100;}//错误
1.引用类型作为返回类型
一.可以作为左值(可以对其赋值),如果返回值没有&则不不能作为左值
二.省去拷贝构造,加快效率(还没有验证)
2.cosnt&做为返回类型
一.不能作为左值
二.省去拷贝构造
三.左值和右值的区别左值:左值必须应该是一个变量或者是表达式等,但是它的物理位置是可以确定的,即编译器能确定其所在内存的地址
右值:可确定或不确定均可
自增(++)或自减(--)不能作为左值
3.const作为变量或参数
一.作为参数时
1.指针类型
例如const char *p
则不能对指针所指向的内容改变
若为char *const p
则不能改变指针的指向,即指针变量p的值
2.非指针类型
不能改变其值
例如 void Fun(const int nNum){nNum = 100;}//错误