(我是C++的初学者.但我熟悉其他一些编程语言,特别是Java.)
谁能帮助我找到这个C++代码中的缺陷?
string & getFullName(string name, bool male){
string fullName = name;
if (male) {
fullName = string(” Mr. ”) + fullName;
return fullName;
}
}
Run Code Online (Sandbox Code Playgroud)
Naw*_*waz 10
至少有三个问题:
首先,您将返回对局部变量的引用.
其次,没有return的时候male是false.我的意思是,如果if块没有被执行怎么办?你的功能会回归什么?这种情况没有退货声明.
“Mr. ”不是字符串文字."Mr. " 是一个字符串文字.注意区别.修复可以是这样的:
string getFullName(string name, bool male)
{
if (male)
{
return string("Mr. ") + name;
}
else
{
return "Ms. " + name; //No need to write even `string("Ms.")`
}
}
Run Code Online (Sandbox Code Playgroud)
不需要局部变量.
或者干脆:
string getFullName(string name, bool male)
{
return (male ? string("Mr. ") : string("Ms. ")) + name;
}
Run Code Online (Sandbox Code Playgroud)