日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

左值和右值

Home Forums 《冒号课堂》讨论区 左值和右值

  • This topic is empty.
Viewing 2 reply threads
  • Author
    Posts
    • #1133
      Todd
      Member

      这几天又看了一下“值与引用”这一章,有一个想法:在介绍值类型对象的时候,如果明确区分并介绍一下左值和右值的概念或许会使得值类型对象的概念更加清晰。我的理解是:右值是天然的不可变的值语义对象,不具备可引用的存储空间,因而是引用透明的;左值具有可被引用的存储空间,可以用来存储右值,对左值的改变是一种新旧更替。

      http://accu.org/index.php/journals/227

    • #1350
      hui
      Keymaster

      关于左值与右值的问题,写书时也曾考虑过,但怕引起读者误解,故而省略。在流行的高级语言中,主要C、C++强调lvalue与rvalue,其中lvalue是有地址的值,可以进行&(取地址)运算,而其他如java、C#等则无此概念。何故?因为后者除基本类型外,其他的变量(即对象变量)都是通过reference来操纵的,即使一个值放在左边,被赋值的也只是reference而非对象本身,对象的内部状态也不会因此而改变,与C、C++中的左值不是一回事。因此左右值与值语义、引用语义并不完全重合。

    • #1351
      Todd
      Member

      lvalue混合了rvalue和reference的特点。lvalue重在内在价值与rvalue相似,而lvalue可以改变又与reference相似。

Viewing 2 reply threads
  • You must be logged in to reply to this topic.
 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)