为何该C++函数未使用参数?带参数的写法是否可行?
带参数的getUserInput()函数是否可行?
我在学习C++时看到一个无参数的getUserInput()函数:
int getUserInput() { std::cout << "Enter an integer "; int input{}; std::cin >> input; return input; }
想问问改成下面带参数的形式是否可行?
int getUserInput(int input) { std::cout << "Enter an integer "; std::cin >> input; return input; }
回答:
语法上这个写法能通过编译,但从设计逻辑来说完全没必要,甚至存在冗余问题:
- 你传入的
input参数会被函数内的std::cin >> input直接覆盖,不管调用时传什么初始值,最终都会被用户输入的内容替换,这个参数完全起不到作用。 - 该函数的核心职责是获取用户输入并返回结果,不需要外部传入任何值,带参数的写法反而会误导调用者,让别人误以为这个参数有实际用途。
如果想让函数更实用,不如改成支持自定义提示语的版本,比如:
int getUserInput(const std::string& prompt) { std::cout << prompt; int input{}; std::cin >> input; return input; }
调用时可以写getUserInput("请输入一个整数: "),既保持了函数的单一职责,又提升了灵活性。
内容的提问来源于stack exchange,提问作者Zaku
相关产品推荐
相关产品推荐

