std::vector<int> a;
a.push_back(1);
a.push_back(a[0]);
我刚刚了解到上面的代码可能非常危险。
(如果不是很明显为什么,你并不孤单......这对我来说也不明显。)
我的问题:
处理它的“标准”方式是什么?制作一个新变量然后立即将其分配给某个东西对我来说似乎有点奇怪。有没有更好的处理方法?
你如何训练自己注意这样的混叠问题?你在寻找什么模式?我不知道承认这种情况;当我了解 C 中的关键字时,我才了解了别名
restrict
,直到现在我才了解问题的真正含义。
编辑:
我很乐意接受答案,但问题的第 (2) 部分似乎没有得到回答。我想知道人们使用什么策略来定位他们编写的代码中的别名错误。
到目前为止,我提出的一种策略是避免为两个参数传递相同的值。(在这种情况下,一个参数是隐式的,一个是显式的。)
还有其他容易注意和注意的事情吗?