有人问我以下问题:
在下列情况下你会如何声明参数类型
- — T 是一种简单类型(例如 int),用作“in”参数。
- — T 是复杂类型,参数用作“in” 参数。
- — T 是一个简单类型,用作“out”参数。
我假设在第一种情况下我们可以简单地按值传递它,因为性能损失不是那么多,在第二种情况下我们应该将它作为引用传递,因为它是一个更复杂的类型,在第三种情况下我们应该通过引用传递它,因为它是一个输出参数。我对吗? 有什么理由不在所有情况下都使用引用吗?从问题中我无法理解“in parameter”是否意味着这不会在函数内部改变,因此我们可以将其作为 const 传递。
最佳答案
— T is a simple type (e.g. int) and is used as an "in" parameter.
在这种情况下,我将按值传递 T(例如 int)。
— T is a complicated type, and parameter is used as an "in" parameter.
在这种情况下,我将使用 对 const 的引用 传递 T:const T&
(以避免例如无用且可能昂贵的深度复制)。
— T is a simple type and is used as an "out" parameter.
在这种情况下,我将通过引用(非常量)传递:T&
。这允许对函数体内部的参数值所做的修改在函数体外部,在调用站点上是“可见的”(例如考虑一个交换函数,它可以有一个像 void swap(T& x, T&y);
).
关于c++ - 在以下情况下,您将如何声明参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22942387/