198得票6回答
一个const引用类成员会延长临时对象的生命周期吗?

为什么会这样呢? #include <string> #include <iostream> using namespace std; class Sandbox { public: Sandbox(const string& n) : member...

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

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

61得票2回答
为什么 `const T&` 不确定是常量?

template<typename T> void f(T a, const T& b) { ++a; // ok ++b; // also ok! } template<typename T> void g(T n) { f<T...

45得票4回答
从函数返回本地变量的const引用

我对从函数返回局部变量的引用有一些疑问:class A { public: A(int xx) : x(xx) { printf("A::A()\n"); } }; const A& getA1() { A a(5); ...

44得票4回答
避免在构造函数中使用常量引用和右值引用的指数级增长。

我正在编写一个机器学习库的一些模板类,我经常遇到这个问题。 我主要使用策略模式,其中类作为模板参数接收不同功能的策略,例如:template <class Loss, class Optimizer> class LinearClassifier { ... } 问题出在构造函数上...

34得票3回答
在Qt中发送信号时使用const-ref

这是我一直没有完全理解的const-ref问题,我真的希望有人能够向我解释清楚。 在调用一个函数时,在另一个函数内部,我知道当传递我不打算篡改的堆栈对象时,const-ref是最好的方式。例如:void someInnerFunction(const QString& text) {...

31得票5回答
C++:将枚举类型作为值传递还是作为常量引用传递更好?

这里涉及到两个相关的问题: A) 枚举是如何实现的?例如,如果我有以下代码:enum myType { TYPE_1, TYPE_2 }; 究竟发生了什么?我知道你可以将TYPE_1和TYPE_2视为int类型,但它们实际上只是int吗? B) 基于这个信息,假设传入的枚举值不...

24得票2回答
对临时变量的const引用与返回值优化

我知道将一个右值分配给一个常量左值引用会延长临时对象的生命周期直到作用域结束。但是,什么情况下需要使用这种方法,什么情况下应该依赖返回值优化并不是很清楚。LargeObject lofactory( ... ) { // construct a LargeObject in a wa...

24得票2回答
成员函数上的const引用限定符

我在一个答案中看到了以下内容: 返回右值引用是否更有效率? 成员函数定义:Beta_ab const& getAB() const& { return ab; } 我熟悉类成员函数上的cv限定符 (const),但不熟悉const&是什么意思。 最后的const&a...

21得票4回答
在C++中,为什么编译器会选择非const函数,而const函数也能正常工作呢?

例如,假设我有一个类: class Foo { public: std::string& Name() { m_maybe_modified = true; return m_name; } const std::st...