所有按引用传递的参数必须加上const。
定义: 在C语言中,如果函数需要修改变量的值, 形参( parameter) 必须为指针,如
int foo(int *pval);
在C++中,函数还可以声明引用形参:
int foo(int &val);
优点: 定义形参为引用避免了像 (*pval)++
这样丑陋的代码,像拷贝构造函数这样的应用也是必需的,而且不像指针那样不接受空指针 NULL
。
缺点: 容易引起误解,因为引用在语法上是值却拥有指针的语义。
结论:
函数形参表中,所有引用必须是const:
void Foo(const string &in, string *out);
事实上这是一个硬性约定:输入参数为值或常数引用,输出参数为指针;输入参数可以是常数指针,但不能使用非常数引用形参。
在强调参数不是拷贝而来, 在对象生命期内必须一直存在时可以使用常数指针, 最好将这些在注释中详细说明。 bind2nd
和 mem_fun
等 STL 适配器不接受引用形参, 这种情况下也必须以指针形参声明函数。
网友评论