【问题标题】:should I use member variable or declare variable inside functions?我应该在函数中使用成员变量还是声明变量?
【发布时间】:2011-04-29 02:58:42
【问题描述】:
我有一个类 UI 来处理我的 C++ 程序的控制台 I/O。
它将有 4-5 个成员函数,它们将使用变量“字符串输入”来获取 cin 输入,其中一些函数将是递归的。
现在我想知道我是否应该在每个函数的开头声明“字符串输入”,或者是否最好有一个私有成员变量并且只在每个函数的开头输入.clear()。从风格 p-o-v 和效率 p-o-v 中,最佳选择是什么?
【问题讨论】:
标签:
c++
coding-style
performance
console-application
【解决方案1】:
如果字符串输入在长期内没有与您的对象永久关联,而只是在短期内被本地使用,则将其设为局部变量。
1) 无论如何,这就是你的意思。
2) 如果您以递归方式调用自己,您可能需要在每个递归调用中使用单独的变量,这些局部变量会自动为您提供。
3) 从效率的角度来看,a) 差异可能太小而无法注意到,并且 b) 在堆栈上创建新变量可能比一直指向对象的成员变量更快,除非它的构造是很贵。
【解决方案2】:
同意 dfan。另一点是,如果您将其定义为成员变量,您可能需要将您的成员函数实现与该字符串的来源解耦。因此,当您将来更改字符串的来源时,例如,您从文件 I/O 而不是 std::cin 读取它,您的方法将保持不变。