正如Charles Bailey在question的ojit_a中所回答的那样,当对象类型较大时,应考虑使用常量引用,但认为哪种对象较大?
编辑:
可以提供更多可以用于提供更具体答案的数据,我决定在此说明中添加一个现实世界的问题。
假设我们有一个这样的对象:
typedef struct dipl {
quint16 __id;
quint16 __pos;
quint16 __len;
} data;
我们还有另一个这样的对象:
class bidipl
{
public:
bidipl();
quint8 id();
void setid(quint8 __id);
void appenddipl(dipl __dipl);
private:
qint8 _M_id;
dipllist _M_dipllist;
};
其中
dipllist
是typedef QList<dipl> dipllist;
。对象dipl
和bidipl
仅创建一次,但可能每分钟访问100次以上。那么,我们应该如何将dipl
传递给我们的append函数呢?void appenddipl(dipl __dipl);
或者
void appenddipl(const dipl& __dipl);
最佳答案
应该考虑什么足够大以证明通过引用而不是按值传递?您会发现不同的答案:
std::pair<int, int>
也应通过引用传递。 至
vectors
,strings
)我个人的喜好是:按值表示原始数据,按引用表示结构。
通过对特定体系结构上的特定应用程序进行概要分析,您将找到唯一有效的答案。 谈论任何没有实际性能分析的性能都是徒劳的。