(我是 C++ 的初学者。但我熟悉其他一些编程语言,尤其是 Java。)
谁能帮我找出这段 C++ 代码中的缺陷?
string & getFullName(string name, bool male){
string fullName = name;
if (male) {
fullName = string(” Mr. ”) + fullName;
return fullName;
}
}
最佳答案
至少存在三个问题:
首先,您要返回对局部变量的引用。
其次,当
male
为false
时,没有return
。我的意思是,如果if
block 没有被执行怎么办?你的函数会返回什么?这种情况下没有返回声明。- 第三,
“先生。 ”
不是字符串文字。"Mr. "
是一个字符串文字。注意区别。
修复可以是这样的:
string getFullName(string name, bool male)
{
if (male)
{
return string("Mr. ") + name;
}
else
{
return "Ms. " + name; //No need to write even `string("Ms.")`
}
}
不需要局部变量。
或者简单地说:
string getFullName(string name, bool male)
{
return (male ? string("Mr. ") : string("Ms. ")) + name;
}
关于c++ - 这段 C++ 代码有什么缺陷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445156/