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

cla*_*amp 3 c++ reference

我试图教一些学生,在下面的例子中你应该通过引用传递,否则将复制对象.

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

int sumOfSizes(CObject const & a, CObject const & b)
{
    return a.getSize() + b.getSize();
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我一个真实世界的例子,其中总和实际上不是预期的?

Oli*_*rth 6

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

因此,你的反例将不得不依赖于一个人为的,设计糟糕的CObject.