121得票9回答
在C++中,"int& foo()"是什么意思?

在阅读这篇文章关于 lvalue 和 rvalue 的解释时,我注意到了以下代码行: int& foo(); foo() = 42; // OK, foo() is an lvalue 我在g++中尝试了它,但编译器显示“对foo()的引用未定义”。如果我添加 int foo(...

88得票5回答
C++ 返回值、引用、常量引用

你能解释一下返回值、值的引用和值的常量引用之间的区别吗? 值:Vector2D operator += (const Vector2D& vector) { this->x += vector.x; this->y += vector.y; ret...

54得票6回答
如何在C++中通过引用返回类对象?

我有一个名为Object的类,它存储一些数据。 我想使用以下函数通过引用返回它: Object& return_Object(); 然后,在我的代码中,我会这样调用它: Object myObject = return_Object(); 我编写了以下代码并且它编译通过。...

39得票6回答
为什么返回函数局部变量的引用不会导致编译错误?

以下代码会引发未定义行为。int& foo() { int bar = 1234; return bar; } 使用g++会发出警告: warning: reference to local variable ‘bar’ returned [-Wreturn-local...

24得票6回答
为什么在重载赋值运算符时使用引用返回而不是在加减运算符中使用?

据我在书籍和网络中所了解到,我们可以通过如下的原型(作为 class Money 的成员函数)对 “加” 或 “减” 运算符进行重载: const Money operator +(const Money& m2) const; const Money operator -(con...

23得票3回答
前缀/后缀递增运算符

我想确保我正确理解传值和传引用的区别。特别是,我正在研究对象的前缀/后缀版本的递增运算符 ++。 假设我们有以下类 X:class X{ private: int i; public: X(){i=0;} X& operator ++ (){ ++i; return *t...

22得票9回答
C++:返回引用和复制构造函数

在C++中,引用让我感到困惑。 :) 基本思路是我正在尝试从函数返回一个对象。如果可能的话,我希望不返回指针(因为那样我将不得不手动 delete 它),也不调用复制构造函数(为了提高效率自然添加:并且因为我想知道是否可以避免编写复制构造函数)。 所以,总的来说,这是我发现的做到这一点的...

12得票1回答
std::function允许在其返回类型中从引用到副本进行隐式转换吗?

在下面的代码片段中,编译器会自动将返回值为复制品的函数指针静默地转换为返回常量引用的std::function。当调用std::function实例时,返回复制品的引用,导致应用程序崩溃(大多数情况下;)。 顺便说一句,普通函数指针不允许这种隐式转换,因此我想知道是否应该向编译器供应商(在这...

11得票7回答
Scheme传递引用方式

我怎么在Scheme中通过引用传递一个变量? 以下是我想要的功能示例:(define foo (lambda (&x) (set! x 5))) (define y 2) (foo y) (display y) ;outputs: 5 另外,有没有一种方法可以通过引...

11得票3回答
值语义 vs 输出参数与大型数据结构

2013演讲:Chandler Carruth: 优化C++的紧急结构 42:45 C++中不需要使用输出参数,我们有值语义。...每当你看到有人争论说“不不不,我不会通过返回值来传递结果,因为复制成本太高了”时,一个正在优化器上工作的人会说他们是错的。好吗?我从来没有见过一个那样的观点是正...