1. 左值与右值:

    C++对于左值和右值没有标准定义,但是有一个被广泛认同的说法:可以取地址的,有名字的,非临时的就是左值;不能取地址的,没有名字的,临时的就是右值.

    可见立即数,函数返回的值等都是右值;而非匿名对象(包括变量),函数返回的引用,const对象等都是左值.

    从本质上理解,创建和销毁由编译器幕后控制的,程序员只能确保在本行代码有效的,就是右值(包括立即数);而用户创建的,通过作用域规则可知其生存期的,就是左值(包括函数返回的局部变量的引用以及const对象),例如:

int& foo(){int tmp; return tmp;}

int fooo(){int tmp; return tmp;}

int a=10;

const int b;

int& temp=foo();//虽然合法,但temp引用了一个已经不存在的对象

int tempp=fooo();
View Code

相关文章:

  • 2021-07-05
  • 2022-12-23
  • 2021-06-08
  • 2022-12-23
  • 2022-01-21
  • 2021-11-22
  • 2022-12-23
猜你喜欢
  • 2021-12-13
  • 2021-06-01
  • 2022-12-23
  • 2021-09-23
  • 2022-12-23
  • 2021-05-19
  • 2021-04-11
相关资源
相似解决方案