我试图教一些学生,在下面的例子中你应该通过引用传递,否则将复制对象.
注意:他们还不知道复制构造函数,所以如果可能的话我不想在示例中提到它们.
int sumOfSizes(CObject const & a, CObject const & b)
{
return a.getSize() + b.getSize();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我一个真实世界的例子,其中总和实际上不是预期的?
正如@Space_C0wb0y在他的评论中暗示的那样,当通过值传递时,这可以做一些"意外"的事情的唯一方法是,如果复制构造函数CObject
做了"意外"的事情(这样本地CObject
实例与原始实例不相等(在任何意义上)实例).这反过来表明设计不好.
因此,你的反例将不得不依赖于一个人为的,设计糟糕的CObject
.