我应该在函数内使用成员变量还是声明变量?

时间:2011-04-29 02:58:42

标签: c++ coding-style performance console-application

我有一个类UI来处理我的C ++程序的控制台I / O. 它将有4-5个成员函数,它们将使用变量'string input'来获取cin输入,其中一些函数将是递归的。 现在我想知道我是否应该在每个函数的开头声明'字符串输入',或者如果最好有一个私有成员变量,而只是在每个函数的开头输入input.clear()。什么是最好的选择,从风格p-o-v和效率p-o-v?

2 个答案:

答案 0 :(得分:3)

如果字符串输入长期不与您的对象持久关联,并且在短期内仅在本地使用,请将其设为局部变量。

1)无论如何,它在语义上是你的意思。

2)如果你是递归地调用自己,你可能需要每次递归调用单独的变量,这些变量会自动为你提供。

3)从效率的角度来看,a)差异可能太小而无法通知,并且b)在堆栈上创建新变量可能比指向对象的成员变量更快,除非构造它是昂贵。

答案 1 :(得分:0)

同意dfan。另一点是,如果将其定义为成员变量,则可能需要将您的成员函数实现与该字符串的来源知识分离。因此,当您将来更改字符串的来源时,例如,您从文件I / O而不是std :: cin中读取它时,您的方法将保持不变。