我被问到以下问题:
在以下情况下如何声明参数类型
我认为在第一种情况下我们可以简单地通过值传递它,因为性能损失不是那么多,在第二种情况下我们应该将它作为参考传递,因为它是一种更复杂的类型,并且在第三种情况下我们应该通过引用传递它,因为它是一个out参数。我对吗? 在所有情况下是否有任何理由不使用引用?从问题中我无法理解“参数”是否意味着函数内部不会改变,因此我们可以将它作为const传递。 / p>
答案 0 :(得分:0)
- T是一个简单类型(例如int),用作" in"参数。
在这种情况下,我只是按值传递T(例如int)。
- T是一个复杂的类型,参数用作" in"参数。
在这种情况下,我使用对const 的引用传递T:const T&
(以避免例如无用且可能很昂贵的深拷贝)。
- T是一种简单类型,用作" out"参数。
在这种情况下,我通过引用传递(非常量):T&
。这允许对函数体内的参数值进行的修改为“#34;可见"在函数体外部,在调用站点(例如,考虑交换函数,可能有像void swap(T& x, T& y);
这样的原型。)