Return 在 c++ 中通过 const 引用接收函数复制值是否值得?
Return by const reference in c++ where the receiver function copy the value is it worth it?
我有这种情况,如果通过 const 参考剂量继电器返回保存一些东西,我会徘徊,这个函数可能会被调用数百次。
我有:
General Container that returns int as const reference
struct Val
{
public:
Val(int& v)
{
iVal = v;
}
const int& toInt()
{
return iVal;
}
private:
int iVal;
};
获取号码的函数:
Val Mo::doSomthing()
{
Val v(444444);
return v;
}
调用 doSomthing().toInt()
:
int x = 0;
class Foo {
...
....
Mo mo;
void Foo::setInt(float scaleX)
{
x = mo.doSomthing().toInt();
//x is class member which other functions are using it
}
...
...
..
}
在这种情况下,是否有任何理由使用 const 引用来保存一些位?
一般来说,对于标量类型,按值 return 它们更便宜。引用(和指针)的大小(字长)与通常的标量类型几乎相同。如果你 return 一个 int& 你 return 〜相同数量的数据,但是当你访问引用的数据时 运行 平台必须解析引用(访问引用的内存)。
但是前面的评论是对的:先量一下。这是一种微优化。
我有这种情况,如果通过 const 参考剂量继电器返回保存一些东西,我会徘徊,这个函数可能会被调用数百次。
我有:
General Container that returns int as const reference
struct Val
{
public:
Val(int& v)
{
iVal = v;
}
const int& toInt()
{
return iVal;
}
private:
int iVal;
};
获取号码的函数:
Val Mo::doSomthing()
{
Val v(444444);
return v;
}
调用 doSomthing().toInt()
:
int x = 0;
class Foo {
...
....
Mo mo;
void Foo::setInt(float scaleX)
{
x = mo.doSomthing().toInt();
//x is class member which other functions are using it
}
...
...
..
}
在这种情况下,是否有任何理由使用 const 引用来保存一些位?
一般来说,对于标量类型,按值 return 它们更便宜。引用(和指针)的大小(字长)与通常的标量类型几乎相同。如果你 return 一个 int& 你 return 〜相同数量的数据,但是当你访问引用的数据时 运行 平台必须解析引用(访问引用的内存)。
但是前面的评论是对的:先量一下。这是一种微优化。