为什么在函数中将参数转换为局部变量?

时间:2014-01-02 01:21:54

标签: language-agnostic

我是一个初学者,我记得在某个地方读书,但遗憾的是不记得在使用它们之前首先将函数的参数转换为局部变量的好习惯。有人能解释一下原因吗?

void MyFunction(type param)
{
  type myVar = param;

  //do stuff with myVar instead of param
}

我猜测param是否传入MyFunction是一个指针,那么当MyFunction正在进行时,它指向的数据可能会发生变化执行,但还有其他原因吗?

3 个答案:

答案 0 :(得分:3)

没有理由以任何通过值传递的现代语言进行复制。

在像Algol这样的旧语言中,按名称传递参数会很有用。请参阅此example

答案 1 :(得分:0)

很糟糕;;当type myVar = param;时,键入的复制构造函数被调用。除非您将myVarparam用于不同目的,否则没有必要。

编辑:如果type的复制成本几乎是免费的,可以用它来方便和阅读。

答案 2 :(得分:0)

这个问题有一些答案here。为什么复制已经复制的值的答案主要指向可维护性考虑。

相关问题