c/c++语言开发共享为什么选择&符号作为C ++中引用的符号?

有没有人知道为什么选择&符号作为表示C ++引用的方式?

AFAIK(虽然我没有附近的书),Stroustroup没有解释这个选择,我觉得有点奇怪,因为相同的符号已用于C中的地址。

    Stroustrup总是非常不愿意引入新的保留符号或名称,因此他可能会使用它来避免使该function对C的用户看起来很奇怪。

    除了我一般同意的Earwicker的回应。 我还推测,因为&是“地址”运算符,它有点合适。 由于引用在很多方面就像是通过地址而不是通过传递。

    除此之外,获取变量的地址通常被称为“引用”

    (是的,我知道引用不必使用引擎下的指针来实现,我指的是它们在概念上的工作方式)。

    这只是猜测。

    谁知道为什么Stroustrup会做任何事情,但我的猜测是因为参考参数的实现涉及传递左值的地址,Stroustrup选择了C address-of运算符,因为它可以让C程序员对成本模型有正确的认识。

    这是我的理论。 我认为它与运算符对符号有效(语法)有很大关系。 考虑

    int a[1]; // a[1] is valid (syntactically) int *a; // *a is valid int a(char, bool); // a(, ) is valid (function call) int C::*a; // .*a is valid 

    从概念上讲,在那些声明中,使用类型( Ccharbool )命名的内容稍后将替换为该类型的表达式。 当然,目的是尽可能多地重用现有语言。 所以我认为他用&

     int &a; // &a is valid 

    重要的一点是& 对引用表示的表达式有效:对于lvalues 。 引用是左值(命名变量也是),仅适用于它们并且可以应用:

     int &g(); // &g() is valid (taking the address of the referred to integer) int g(); // &g() is *not* valid (can't apply to temporary int) 

    我的想法是指针中使用了2个符号:*和&。 因为int *表示指向int的指针,可能Stroustrup不想引入一个全新的符号。 由于引用有点像指针,他坚持使用&。 另外,之前唯一有效的使用是取得某些东西的地址,因此可以在声明中使用。

    需要了解更多c/c++开发分享为什么选择&符号作为C ++中引用的符号?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享为什么选择&符号作为C ++中引用的符号?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979673.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐