我觉得这个问题肯定是在某个地方,但要么我找不到合适的搜索词,要么它就被漏掉了。
假设我有这样保护成员的类.
class MyClass {
int m_value;
public:
MyClass(int v) : m_value(v) {}
int value() const { return m_value; }
}我看到了所有的示例代码,因此相反,返回一个对成员变量的const引用,如下所示.
class MyClass {
int m_value;
public:
MyClass(int v) : m_value(v) {}
const int& value() const { return m_value; }
// ^^^^^^^^^^
}我通常理解返回const的值,以及返回复合对象的引用的值,但是小于体系结构指针大小的对象的值是多少?它看起来既不那么有效,也不那么安全,没有任何我能想到的优势。
在我的示例中,我想可以对构造函数进行类似的讨论,但是这个问题在这里集中于返回的值。
This is the SO answer促使我问了这个问题。
发布于 2018-05-02 14:39:43
将const &返回到int这样的类型可能是完全没有意义的,而且可能会降低性能。对于将const int&作为函数参数类型传递也可以这样说,但这更容易被接受,因为它确实克服了调用站点中不必要的类型转换。
这只是程序员自己养成的一个坏习惯。
发布于 2018-05-02 14:47:07
如果你只谈论int,那么是的,这可能是毫无意义的。但是,当您知道稍后可以更改返回或参数类型,并且使用别名时,放置const &可能会很有用,所以以后所要做的就是更改别名值,这个值可以超过8个字节。像这样
class MyClass {
using TInnerType = int;
TInnerType m_value;
public:
MyClass(const TInnerType& v) : m_value(v) {}
const TInnerType& value() const { return m_value; }
// ^^^^^^^^^^
}https://stackoverflow.com/questions/50137263
复制相似问题