我定义了以下类:在此函数中使用引用参数是否有任何优势?
class Action
{
public:
Action(){ _bAllDone = false; }
void AddMove(Move & m);
private:
std::deque<Move> _todo;
bool _bAllDone;
};
成员AddMove的定义如下:
void Action::AddMove(Move & m)
{
_todo.push_back(m);
}
我注意到没有这个函数的引用参数,复制构造函数被调用了两次,有一个引用参数只被调用一次。仅调用一次复制构造函数而不是两次是使用引用参数的充分理由吗?
一个很好的答案,+1将它作为const传递。 – 2009-10-05 20:18:59
另一个重要的原因(我认为更重要的原因,IMO,如果你的代码已经设计为不修改引用)通过引用传递给const是允许临时接受参数(例如'action.AddMove( Move(/ * ... * /));'如果'AddMove'采用'const Move&',则是有效的,但如果仅需一个'Move&'则无效) – GRB 2009-10-05 20:51:14