c++ - 为什么编译器允许函数返回一个存储为引用的值

标签 c++ reference compiler-errors

谁能解释为什么这段代码不会产生编译错误?

class Foo
{
   public:
      int _x;
};

Foo getFoo()
{
   Foo myfoo;
   myfoo._x = 10;
   return myfoo;
}


int _tmain()
{
   // shouldn't this line of code be a compiler error?
   Foo& badfoo = getFoo();

   return 0;
}

最佳答案

您可能正在使用允许将其作为扩展的 VC++。

main.cpp:18: warning C4239: nonstandard extension used : 
'initializing' : conversion from 'Foo' to 'Foo &'

关于c++ - 为什么编译器允许函数返回一个存储为引用的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624556/

相关文章:

reference - Rust的确切自动引用规则是什么?

c++ - 如何在 vector 中 push_back?

Java 文件树错误(FileTreeModel 无法解析为类型)

ruby-on-rails - Gem::Installer::ExtensionBuildError:错误:无法构建 gem native 扩展。 - 在 Debian 7 上安装 Redmine

C++:使用更大的比较器意外提高性能

java - 字符串引用另一个字符串的一部分? java

c++ - 哪一个使用c++ STL容器或MFC容器?

c++ - 在visual studio中,在c++项目的项目属性中,引用窗口是什么?

c++ - std::wofstream::open 不适用于 MAC/Xcode

c++ - 如何在 g++-10 中结合基类显式构造函数和指定初始化?