【发布时间】:2018-10-20 10:12:57
【问题描述】:
特殊情况是,在一次大型重构之后,一位同事发生了变化
Foo & foo = DoSomething();
到
auto foo = DoSomething();
在哪里
Foo & DoSomething();
这导致了一个问题,即 foo 是通过复制而不是通过引用分配的。我们抓到了一个案子。我很好奇是否有编译器警告来检测上述代码导致的错误类型。
** 编辑 **
以下所有答案都包含有关应该做什么或不应该做什么的有用且有效的建议。需要明确的是,我正在寻找一些关于损坏发生后可以做什么的建议。一个很少使用的编译警告会很好。最后我们只是查看了代码差异,看看是否不止一次犯了同样的错误。
【问题讨论】:
-
已删除复制构造函数。反正很少需要。
-
很难警告什么是完全有效的代码。我同意 VTT,顺便说一句。删除复制 ctor,它会标记您所寻找的内容(可能更多,但您必须顺其自然)。
-
没什么可警告的,所以没有。
-
根据我的经验;这种警告通常由单元测试提供。你有单元测试,不是吗?
-
另一种方法是查看重构的差异并寻找缺失的
&
标签: c++ visual-studio-2010 pass-by-reference pass-by-value auto