我有一個類UI來處理我的C++程序的控制檯I/O。 它將有4-5個成員函數,它們將使用變量'string input'來獲取cin輸入,其中一些函數將是遞歸的。 現在我想知道是否應該在每個函數的開始處聲明'string input',或者如果最好有一個私有成員變量,並且只需在每個函數的開始處輸入input.clear()。從風格p-o-v和效率p-o-v,什麼是最佳選擇?我應該使用成員變量還是在函數內聲明變量?
0
A
回答
3
如果字符串輸入不是長期與您的對象相關聯,並且只是在短期內本地使用,請將其作爲局部變量。
1)它的語義上無論如何你的意思。 2)如果你正在遞歸地調用自己,你可能需要每次遞歸調用時單獨的變量,這些變量自動地給你自己的局部變量。 3)從效率的角度來看,a)差異可能太小,無法注意到,b)在堆棧上創建一個新變量可能更快,而不是指向該對象的成員變量,除非構建它價格昂貴。
0
同意dfan。另一點是,如果將其定義爲成員變量,則可能需要將該成員函數的實現與該字符串的來源相關聯。因此,當您在將來更改字符串的源時,例如,您從文件I/O而不是std :: cin中讀取它時,您的方法將保持不變。
相關問題
- 1. 。我們應該在循環之前還是在內部聲明一次變量?
- 2. 使用AS3,我應該只在需要時聲明全局變量或函數內的變量嗎?
- 3. 聲明私有成員變量
- 4. AccessViolationException如果我變量聲明爲公共成員,而不是局部變量
- 5. 我應該使用全局變量還是在java中傳遞變量?
- 6. 我應該使用參數還是導出環境變量?
- 7. 聲明變量不是在用我要聲明Postgres裏變量的Postgres
- 8. 在聲明之前使用成員變量?
- 9. 我應該使用會話變量還是全局超級變量
- 10. 我應該每次使用全局變量還是調用函數? C++
- 11. 爲什麼我可以在成員函數中使用尚未聲明的成員變量?
- 12. 聲明爲全局變量的PHP變量在函數內不起作用
- 13. C++變量可以在函數體中聲明,但不是類成員?
- 14. 在Javascript函數中聲明變量
- 15. 在SQL函數中聲明變量
- 16. 在函數中聲明變量
- 17. 在函數中聲明靜態變量
- 18. 在Perl函數中聲明變量
- 19. 適配器應該是局部變量還是實例變量?
- 20. 變量聲明,使用libuv
- 21. 使用變量內部的函數聲明一個值
- 22. 變量聲明?
- 23. 聲明變量
- 24. 聲明變量
- 25. 聲明變量
- 26. 變量聲明
- 27. 變量聲明
- 28. 聲明變量
- 29. C++函數聲明常數變量
- 30. 調用在函數內聲明的變量