我正在尝试教一些学生,在以下情况下,您应该通过引用传递,否则将复制对象。
注意:他们还不知道复制构造函数,因此,如果可能的话,我不想在示例中提及它们。
int sumOfSizes(CObject const & a, CObject const & b)
{
return a.getSize() + b.getSize();
}
有人可以帮我举一个实际的例子吗,那笔款项实际上是事实,而不是预期的结果?
最佳答案
正如@ Space_C0wb0y在他的评论中所暗示的那样,按值传递时,此方法可能会执行“意外”操作的唯一方法是CObject
的副本构造函数执行了“意外”操作(以至于本地CObject
实例在任何意义上都不等效)。原始实例)。反过来,这将表明设计不良。
因此,您的反例将不得不依赖人为设计错误的CObject
。