我还没有找到任何合适的问题,所以我想知道在性能和/或内存方面什么是“更好”的C ++风格。
两个代码都在方法内。问题是:何时宣布long prio
?有什么影响?
代码1
while (!myfile.eof())
{
getline(myfile, line);
long prio = strtol(line); // prio is declared here
// put prio in map...
// some other things
}
代码2
long prio; // prio is declared here
while (!myfile.eof())
{
getline(myfile, line);
prio = strtol(line);
// put prio in map...
// some other things
}
答案 0 :(得分:4)
在这种情况下,性能没有差异。如果比较生成的代码,两种情况很可能相同。
我认为最常见的风格是将变量声明为尽可能接近其首次使用,但与所有风格问题一样,它可以是非常主观的“最佳”。
正如其他人所提到的,如果可能的话,最好将每个变量限制在尽可能紧的范围内。这样做可以降低变量在错误的上下文中使用,被错误覆盖等的风险。它还减少了您需要读取的代码量,以便找出变量的使用位置,这有助于理解代码。
延迟声明的一个优点是,对于像这样的情况,读取的值在身体的其余部分没有被修改,可以使const
有助于清晰度和可读性。由于const
变量在声明后无法分配,因此仅适用于前一种风格。
答案 1 :(得分:1)
最好将变量的范围限制为访问它的位置。在这种情况下,它是while循环。
如果你担心每次循环运行时是否会声明prio
- :) - 我可以向你保证不会出现这种情况(声明不是运行时代码的一部分)。这没有性能开销。
答案 2 :(得分:1)
在性能方面没有区别,但是恕我直言,前者(在使用变容器的范围内声明,并且在变量的声明中使用初始化器)是优选的。
声明最接近使用位置的变量的优点是: