代码之家  ›  专栏  ›  技术社区  ›  Vijay

C++中的引用变量

  •  1
  • Vijay  · 技术社区  · 15 年前

    为什么C中不存在/使用引用变量?

    为什么它们是为C++设计的?

    6 回复  |  直到 10 年前
        1
  •  6
  •   Cogwheel    15 年前

    因为C是第一个发明的。我不知道他们当时是否没有考虑引用(大部分是不必要的),或者是否有一些特殊的原因不包括它们(可能是编译器的复杂性)。对于面向对象和通用构造,它们当然比C的过程样式更有用。

        2
  •  5
  •   Peter Mortensen icecrime    10 年前

    参考论据最初是为了一件事而发明的,阿法克: 运算符重载语义 . 例如,运算符[]必须返回引用。

    “隐藏的指针”是否应该用于任何其他用途,这是一个争论不休的话题。

    许多公司的开发会议文件都说“从不使用参考资料”。如果你需要一个指针,就这么说。

    然而,后来发现引用有一个主要优势(不,不是语法上的优势)。它是这样的:除非你真的很努力地去打破它,否则一个参考是肯定有效的。

    就我个人而言,我仍然不明白为什么我不能在C++中这样做:

    int a1, a2;
    int &b = a1;
    &b = a2; // Error. address of referenced is not an lvalue. Why?!
    
        3
  •  1
  •   Carl Norum    15 年前

    它们不在C中,因为它们不是必需的。C具有很少的“外来”特征。您可以不使用引用编写任何程序,因此不包括引用。C++的开发时间比C语言要晚得多,所以它的设计者会抛出各种原本不在C.的东西。

        4
  •  1
  •   Amardeep AC9MF    15 年前

    正如你所知道的,C比C++早十年左右。引用是C++语言中引入的一个特性。C语言的后续版本已经采用了C++语言的一些特性(如const和//注释)。参考文献的概念还没有到目前为止。

    我们可以假设,它们在面向对象编程中的有用性并不能有效地转化为C的过程编程。

        5
  •  1
  •   Peter Mortensen icecrime    10 年前

    我认为我同意帕维尔的观点,他们是为了让超载的操作员正常工作而发明的。很明显,C++的第一个版本(C类)没有引用,好像它们引用过一样。 this 将是引用而不是指针。

        6
  •  0
  •   Mau    15 年前

    我猜C生来就有一顶极简主义的帽子,引用只是指针的句法糖分。