如果不通过引用将对象传递到函数中,可能会出现什么问题

What could go wrong if you don't pass objects by reference into a function

本文关键字:问题 什么 函数 引用 对象 如果不      更新时间:2023-10-16

我试图教一些学生,在以下情况下,您应该通过引用传递,否则对象将被复制。

注意:他们还不知道复制构造函数,所以如果可能的话,我不想在示例中提及它们。

int sumOfSizes(CObject const & a, CObject const & b)
{
    return a.getSize() + b.getSize();
}

谁能帮我举一个真实世界的例子,其中总和实际上不是预期的?

正如

@Space_C0wb0y在他的评论中所暗示的那样,当传递值时,这样做的唯一方法是,如果CObject的复制构造函数做了一些"意外"的事情(使得本地CObject实例不等同(在任何意义上)与原始实例)。 这反过来又表明设计不好。

因此,您的反例将不得不依靠人为的、设计不良的CObject.