对于在某些情况下是选择值还是引用语义,我没有感觉(但我希望如此)。有什么我可以应用的经验法则吗?
我通常会为内置数据类型(char、int、bool、double 等)以外的所有内容选择引用。但是,有时不可能从函数返回引用,所以我不得不使用指针。下面的函数就是一个例子:
Foo bar()
{
Foo f;
f.do_stuff();
return f;
}
我会使用 boost::shared_ptr 来存储 Foo 对象,但这使得使用该对象非常难看。我目前正在研究一个返回一个几乎不会超过 10 个元素的双端队列的函数(这是我的假设,我无法确定)。按值返回可以吗?我的考虑是过早优化的情况吗?