Reference Parameter
Tip:所有按引用传递的参数必须加上const
定义:
在C语言中,如果函数需要修改变量的值,必须使用pass by pointer。如 int foo(itn *pval).在C++中,还可以pass by reference:int foo(int &val).
优点:
1.pass by reference可以防止出现(*pval)++这样语言不清,丑陋的代码。2.reference parameter对于copy ctor这样的应用是必须的:可以操作不支持copy ctor的类型,因为它不调用copy ctor。3.同时也明确不接受空对象。4.传递的速度、效率更快,4个bytes.
缺点:
容易引起误解:有着值变量的语法,却拥有指针的语义.
结论:
函数的参数列表中,所有的reference parameter必须是const.:
void Foo(const std::string &in, string *out);
这是Google Code的一个硬性约定:输入参数:pass by value、pass by const reference、pass by const pointer
输出参数:pointer
输入参数决不可以是non-const reference.
有时候输入形参const T*比 const T&更加明智:
可能会传递null pointer
函数要把Pointer或对地址的引用传递给parameter
总而言之,大多数时候输入形参往往是const T&,若用const T*则说明输入另有处理。所以若要使用const T*,则应给出理由,否则会使读者迷惑.

浙公网安备 33010602011771号