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*,则应给出理由,否则会使读者迷惑.

   

 

posted @ 2018-10-27 19:23  看!前方  阅读(300)  评论(0)    收藏  举报