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

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

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

有人可以帮我举一个实际的例子吗,那笔款项实际上是事实,而不是预期的结果?

最佳答案

正如@ Space_C0wb0y在他的评论中所暗示的那样,按值传递时,此方法可能会执行“意外”操作的唯一方法是CObject的副本构造函数执行了“意外”操作(以至于本地CObject实例在任何意义上都不等效)。原始实例)。反过来,这将表明设计不良。

因此,您的反例将不得不依赖人为设计错误的CObject

10-08 13:33