在c++中,传递一个参数时,首选按引用传递,而且是const引用。对于客户程序员来说,这样做语法与安值传递是一样的,所以不会像使用指针那样的混淆。对于函数创建者来说,传递地址比传递整个类对象更有效,如果按const引用来传递,意味着函数将不改变该地址所指的内容,从客户程序员的观点来看,效果就像按值传递一样,只是更有效。
临时变量按引用传递给一个函数时,这个函数的参数必须是const引用。
class X{};
X f(){return X();}
void g1(X&){}
void g2(const X&){}
int main()
{
g1(f());
g2(f());
}
函数f()按值返回类X的一个对象。这意味着当立即取f()的返回值并把它传递给另外一个函数时,将建立一个临时量,该临时量是const。这样,函数g1()中的调用是错误的,因为g1()不接受const引用,g2()是对的。
务必仔细读 think in c++ 第八章!