gpt4 book ai didi

c++ - 通过引用和无引用对象

转载 作者:行者123 更新时间:2023-11-30 04:07:54 24 4
gpt4 key购买 nike

我想问一个让我困惑的简单问题。例如,如果我写在参数中,则没有引用 &。但是在第二种情况下,我将 & 与 rectangleType& 一起使用,我很困惑为什么我们使用这个 & 而我们什么时候可以不用这个 & 来做到这一点。哪里有必要以及我们为什么使用它。我的问题不是关于复制构造函数。

 rectangleType rectangleType::operator+
(const rectangleType rectangle)

案例二:

rectangleType rectangleType::operator+
(const rectangleType& rectangle)

最佳答案

当您按值传递像 rectangleType(或任何其他类型)这样的对象时,您正在制作该对象的拷贝。这意味着:

  • 调用者看不到函数对对象所做的任何更改,因为更改是在拷贝上进行的,而不是原始对象。
  • 复制对象的行为会产生性能成本。
  • 对于某些类型甚至可能无法复制对象。

所以,无论什么时候都通过引用传递:

  • 您希望函数能够修改原始对象。
  • 您希望代码无需复制即可运行得更快。
  • 您传递的对象没有公共(public)复制构造函数。

当您不需要需要函数来修改原始对象时,通过const 引用传递。

对于用户定义的类型,这基本上可以归结为“尽可能通过引用传递”。

关于c++ - 通过引用和无引用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com