2011-04-29 103 views
0

我有一個類UI來處理我的C++程序的控制檯I/O。 它將有4-5個成員函數,它們將使用變量'string input'來獲取cin輸入,其中一些函數將是遞歸的。 現在我想知道是否應該在每個函數的開始處聲明'string input',或者如果最好有一個私有成員變量,並且只需在每個函數的開始處輸入input.clear()。從風格p-o-v和效率p-o-v,什麼是最佳選擇?我應該使用成員變量還是在函數內聲明變量?

回答

3

如果字符串輸入不是長期與您的對象相關聯,並且只是在短期內本地使用,請將其作爲局部變量。

1)它的語義上無論如何你的意思。 2)如果你正在遞歸地調用自己,你可能需要每次遞歸調用時單獨的變量,這些變量自動地給你自己的局部變量。 3)從效率的角度來看,a)差異可能太小,無法注意到,b)在堆棧上創建一個新變量可能更快,而不是指向該對象的成員變量,除非構建它價格昂貴。

0

同意dfan。另一點是,如果將其定義爲成員變量,則可能需要將該成員函數的實現與該字符串的來源相關聯。因此,當您在將來更改字符串的源時,例如,您從文件I/O而不是std :: cin中讀取它時,您的方法將保持不變。