繁体   English   中英

为什么int&a = 10; 在古代C ++编译器中有效吗?

[英]Why int& a=10; is valid in ancient C++ compilers?

我只是想知道为什么像Turbo c ++ 3.0(蓝屏IDE)和Borland Turbo C ++ 4.5等古代编译器在下面的程序中没有报告任何错误。

#include <iostream.h>
int main()
{
  int& a=10;
  cout<<a;
  return 0;
}

现代C ++编译器不会接受上述程序,但为什么古代编译器允许这样做呢? 他们只是在上述程序中显示单个警告。

它曾经是有效的C ++来绑定对临时的引用,所以你可以将double传递给期望int&的函数,如C ++ §3.7 的设计与演变中所述

但是,我犯了一个严重的错误,允许非const引用由非左值初始化。 [...]
允许通过非左值初始化引用的原因是允许按值调用和按引用调用之间的区别是被调用函数指定的细节,并且对调用者不感兴趣。 对于const引用,这是可能的,对于非const引用,它不是。 对于版本2.0,更改了C ++的定义以反映这一点。

在C ++ 2.0(和ISO C ++)中,临时数只能绑定到const引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM