为什么参考变量在C中不存在/使用?
为什么它们是为C ++设计的?
答案 0 :(得分:6)
因为C是先发明的。我不知道他们当时是否没有考虑过引用(大部分是不必要的),或者是否有某些特殊原因不包括它们(可能是编译器的复杂性)。它们对于面向对象和通用结构肯定比C的过程风格更有用。
答案 1 :(得分:5)
最初发明了参考参数,AFAIK,一方面:运算符重载语义。例如,operator []只需返回引用。
当时,“隐藏指针”应该用于其他任何事情,这是一个极具争议的话题。
许多公司的许多开发会议文件都说“从不使用引用。如果你需要一个指针,那就这么说”。
但是,后来发现引用有一个主要优点(不,不是语法糖)。就是这样:保证参考有效,除非你真的很难打破它。
就个人而言,我仍然不明白为什么我不能用C ++做到这一点:
int a1, a2;
int &b = a1;
&b = a2; // Error. address of referenced is not an lvalue. Why?!
答案 2 :(得分:1)
他们不在C中,因为他们不是必需的。 C几乎没有“无关”的特征。您可以在不使用引用的情况下编写任何程序,因此它们不包括在内。 C ++的开发时间远远晚于C,因此它的设计者投入了最初不存在于C中的各种东西。
答案 3 :(得分:1)
正如您所知,C早于C ++大约十年。引用是C ++语言中引入的一个特性。 C标准的后续版本(例如const和// comment)已采用C ++语言的某些功能。到目前为止,参考的概念还没有。
可以假设它们在面向对象编程中的用处并没有像C的过程编程那样有用。
答案 4 :(得分:1)
我认为我同意Pavel的想法,即它们是为了使重载运算符正常工作而发明的。很明显,C ++的第一个版本(带有类的C)没有引用,就像它们那样,this
将是引用而不是指针。
答案 5 :(得分:0)
我猜C出生时带有极简主义的帽子,参考只是指针的语法糖。