我有一个类UI来处理我的C++程序的控制台I/O。它将有4-5个成员函数,这些函数将使用变量'string input‘来获取cin输入,其中一些函数将是递归的。现在我在想,我是应该在这些函数的开头声明'string input‘,还是应该有一个私有成员变量,只在每个函数的开头声明input.clear()。从风格p-o-v到效率p-o-v,最好的选择是什么?
发布于 2011-04-29 11:05:54
如果字符串输入在长期内不会与您的对象持久关联,并且在短期内只是在本地使用,请将其设置为局部变量。
1)不管怎样,它在语义上是你想要的。
2)如果你正在递归地调用你自己,你可能希望每个递归调用都有单独的变量,局部变量会自动给你。
3)从效率的角度来看,a)差异可能太小而无法注意到,b)在堆栈上创建一个新变量可能比一直指向对象的成员变量更快,除非构造它的代价很高。
发布于 2011-04-29 11:33:06
同意dfan的观点。另一点是,如果您将其定义为成员变量,则可能需要在了解此字符串的源代码的情况下将成员函数实现解耦。因此,当您将来更改字符串的源时,例如,您从文件I/O而不是std::cin读取它时,您的方法将保持不变。
https://stackoverflow.com/questions/5827375
复制相似问题