我是 C++ 编程新手,但我有 Java 编程经验。我需要有关如何在 C++ 中将对象传递给函数的指导。
我是否需要传递指针、引用或非指针和非引用值?我记得在 Java 中不存在这样的问题,因为我们只传递保存对象引用的变量。
如果您还可以解释在哪里使用这些选项,那就太好了。
经验法则C++11:
Pass by value,除非当
- 你不需要对象的所有权,一个简单的别名就可以了,在这种情况下你pass by
const
参考,
- 你必须改变对象,在这种情况下,使用经过一个非
const
左值参考,
- 您将派生类的对象作为基类传递,在这种情况下您需要通过引用传递。 (利用前面的规则来判断是否通过
const
参考与否。)
实际上从不建议通过指针传递。可选参数最好表示为std::optional
(boost::optional
对于较旧的标准库),并且通过引用可以很好地完成别名。
C++11 的移动语义使得按值传递和返回更具吸引力,即使对于复杂对象也是如此。
经验法则C++03:
传递参数by const
参考,除非当
- 它们将在函数内部进行更改,并且此类更改应反映在外部,在这种情况下,您经过非
const
参考
- 该函数应该可以在没有任何参数的情况下调用,在这种情况下,您可以通过指针传递,以便用户可以传递
NULL
/0
/nullptr
反而;应用之前的规则来确定是否应该传递一个指向 a 的指针const
争论
- 它们是内置类型,可以是通过副本
- 它们将在函数内部进行更改,并且此类更改应该not被反射到外面,在这种情况下你可以通过副本(另一种方法是根据前面的规则传递并在函数内部进行复制)
(这里,“按值传递”被称为“按副本传递”,因为按值传递在C++03中总是创建一个副本)
还有更多内容,但是这几条初学者规则将使您走得更远。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)