我应该在函数中使用成员变量还是声明变量?
should I use member variable or declare variable inside functions?
我有一个类UI来处理我的c++程序的控制台I/O。它将有4-5个成员函数,这些函数将使用变量"字符串输入"来获取cin输入,其中一些函数将是递归的。现在我想知道我是否应该在每个函数的开始声明"字符串输入",或者在每个函数的开始有一个私有成员变量并且只是input.clear()。从风格p-o-v到效率p-o-v,哪个是最好的选择?
如果字符串输入在长期内没有持久地与您的对象关联,并且只是在短期内局部使用,则将其设置为局部变量。
从语义上讲,这就是你的意思。
2)如果你递归地调用自己,你可能需要每个递归调用单独的变量,这些局部变量会自动给你。
3)从效率的角度来看,a)差异可能太小而无法注意到,b)在堆栈上创建一个新变量可能比一直指向对象的成员变量更快,除非构造它的成本很高。
同意dfan的观点。另一点是,如果您将其定义为成员变量,则可能需要将成员函数实现与该字符串的源知识解耦。因此,当您将来更改字符串的来源时,例如,您从文件I/O而不是std::cin读取它,您的方法将保持不变。
相关文章:
- 在将变量声明为引用时,堆在释放后使用
- 静态变量声明和定义
- 在变量声明中使用 for 循环
- 向量索引变量声明(size_t 或 std::vector<DATATYPE>::size_type)
- C++ 类型类的变量声明不命名类型?
- 将本地 OpenCV Mat 变量声明为静态以防止重新分配
- std::enable_if 更改成员 *变量* 声明/类型
- 在C++中,变量声明左侧的大括号是什么意思?
- 将变量声明为全局变量,然后声明为局部变量 -Shadowing-
- 命名空间内C++变量声明
- 将静态全局变量声明为内联有什么意义吗?
- 如何将一个变量声明为另一个变量的值
- 如何将迭代器变量声明为私有成员变量
- 没有变量声明为函数,但错误:二进制表达式的操作数无效
- 有没有人有书面证据来保证函数中参数的定义方式与普通变量声明相同?
- ClangTool 如何获取变量声明中模板参数的位置?
- 标准与显式自动推导变量声明
- C 静态变量声明怪异链接器错误
- 如何为数组成员变量声明 getter/setter
- 可视C++变量声明