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

标签 c++

有人问我以下问题:

在下列情况下你会如何声明参数类型

  1. — T 是一种简单类型(例如 int),用作“in”参数。
  2. — T 是复杂类型,参数用作“in” 参数。
  3. — 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/

相关文章:

c++ - 使用 boost::shared_ptr 时有哪些潜在危险?

c++ - Mongocxx : How to display the documents inversely

c++ - 在 Linux 中使用 C/C++ 获取机器序列号和 CPU ID

c++ - Qt 4.7 QtSerialPort/QSerialPortInfo : No Such file or Directory

c++ - NULL 指针能够访问类成员函数

c++ - 在 C++ 中全局初始化类的正确方法

c++ - 创建用于检索字符串 vector 的语法

c++ - 什么决定临时对象的生命周期何时扩展到 const 引用或右值引用?

c++ - QT4.8.5在QTextEdit上显示光标

c++ - EnterCriticalSection 似乎没有阻塞