在以下情况下,您将如何声明参数类型?

时间:2014-04-08 16:06:23

标签: c++

我被问到以下问题:

在以下情况下如何声明参数类型

  1. - T是一个简单类型(例如int),用作“in”参数。
  2. - T是一个复杂的类型,参数用作“in” 参数。
  3. - T是一个简单类型,用作“out”参数。
  4. 我认为在第一种情况下我们可以简单地通过值传递它,因为性能损失不是那么多,在第二种情况下我们应该将它作为参考传递,因为它是一种更复杂的类型,并且在第三种情况下我们应该通过引用传递它,因为它是一个out参数。我对吗? 在所有情况下是否有任何理由不使用引用?从问题中我无法理解“参数”是否意味着函数内部不会改变,因此我们可以将它作为const传递。 / p>

1 个答案:

答案 0 :(得分:0)

  

- T是一个简单类型(例如int),用作" in"参数。

在这种情况下,我只是按值传递T(例如int)

  

- T是一个复杂的类型,参数用作" in"参数。

在这种情况下,我使用对const 的引用传递T:const T&(以避免例如无用且可能很昂贵的深拷贝)。

  

- T是一种简单类型,用作" out"参数。

在这种情况下,我通过引用传递(非常量)T&。这允许对函数体内的参数值进行的修改为“#34;可见"在函数体外部,在调用站点(例如,考虑交换函数,可能有像void swap(T& x, T& y);这样的原型。)