C++ 临时对象的引用,该怎么处理
C++ 临时对象的引用C/C++ codeclass Widget{}int main(){const Widget &cw Widget()Widget &w Widge
C++ 临时对象的引用
C/C++ codeclass Widget{};int main(){ const Widget &cw = Widget(); Widget &w = Widget(); //< 通过编译 const int &ci = int(); int &i = int(); //< 编译错误}
以上是 visual studio 2005、visual studio 2010 的编译结果
标准规定,非 const 的(左值)引用应绑定至一个左值,而不是一个临时对象(即一个右值)。而根据测试的结果,似乎只适用于内置类型。大家是什么看法?
[解决办法][解决办法][解决办法]C/C++ codeclass Widget{public: Widget(int i){}};int main(void){ Widget & w = ( Widget(1) = Widget(2) ); //vs2008 通过 return 0;}
[解决办法]
额vs的编译器对于Widget &w = Widget(); 这样的代码是没有严格执行标准的 正常来说是需要const Widget &w = Widget(); 才符合要求的。这点你可以通过gcc的编译器验证
[解决办法]