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

我应该在函数中使用成员变量还是声明变量? 我有一个类UI来处理C++程序的控制台I/O。 它将有4-5个成员函数,这些函数将使用变量“字符串输入”来获取cin输入,其中一些函数将是递归的。 现在我想知道是应该在每个函数的开头声明“string input”,还是最好有一个私有成员变量,只在每个函数的开头声明input.clear()。从样式p-o-v和效率p-o-v中,最好的选择是什么?,c++,coding-style,performance,console-application,C++,Coding Style,Performance,Console Application,如果字符串输入在长期内没有持久地与对象关联,而只是在短期内局部使用,请将其设置为局部变量 1) 从语义上讲,这就是你的意思 2) 如果您是递归地调用自己,您可能希望每个递归调用都有单独的变量,这些局部变量会自动提供给您 3) 从效率的角度来看,a)差异可能太小,无论如何都不会引起注意;b)在堆栈上创建新变量可能比一直指向对象的成员变量更快,除非构建该变量的成本很高。如果字符串输入在长期内没有与对象持续关联,短期内只是局部使用,将其作为局部变量 1) 从语义上讲,这就是你的意思 2) 如果您是递归

如果字符串输入在长期内没有持久地与对象关联,而只是在短期内局部使用,请将其设置为局部变量

1) 从语义上讲,这就是你的意思

2) 如果您是递归地调用自己,您可能希望每个递归调用都有单独的变量,这些局部变量会自动提供给您


3) 从效率的角度来看,a)差异可能太小,无论如何都不会引起注意;b)在堆栈上创建新变量可能比一直指向对象的成员变量更快,除非构建该变量的成本很高。

如果字符串输入在长期内没有与对象持续关联,短期内只是局部使用,将其作为局部变量

1) 从语义上讲,这就是你的意思

2) 如果您是递归地调用自己,您可能希望每个递归调用都有单独的变量,这些局部变量会自动提供给您


3) 从效率的角度来看,a)差异可能太小,无论如何都不会引起注意;b)在堆栈上创建新变量可能比一直指向对象的成员变量要快,除非构建它的成本很高。

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

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