c++ - 这段 C++ 代码有什么缺陷?

标签 c++

(我是 C++ 的初学者。但我熟悉其他一些编程语言,尤其是 Java。)

谁能帮我找出这段 C++ 代码中的缺陷?

string & getFullName(string name, bool male){
    string fullName = name;
    if (male) {
        fullName = string(” Mr. ”) + fullName;
        return fullName;
    }
}

最佳答案

至少存在三个问题:

  • 首先,您要返回对局部变量的引用。

  • 其次,当malefalse时,没有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/

相关文章:

c++ - goroutines 和 boost.fiber 之间的区别

c++ - Qt Widget 不显示

c++ - 当我将 short 分配给 char 时会发生什么类型转换?

c# - 如何处理来自 C# 的非托管 Win32 异常

c++ - C++ 中方法签名在结束括号和开始大括号之间的部分是什么?

c++ - ironpython 在 python 中实例化 C++ 类

c++ - 从可变参数模板参数声明成员变量

c++ - 在matlab中为矩阵制作订单

c++ - std::bind 和 std::thread 总是复制参数背后的基本原理是什么?

c++ - 左值到右值的转换