以这种方式比较字符串是一种好的风格吗?

use*_*108 0 c++ comparison operator-overloading c-strings c++17

我有这个想法在.cpp文件中使用:

namespace
{
    bool operator==(char const* const a, char const* const b) noexcept
    {
        return !::std::strcmp(a, b);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是好风格吗?

编辑:

我认为有条件的c ++ 1z方式,即完成同样的事情,将使用新std::string_view类进行比较.

son*_*yao 11

您不能重载不采用的操作符classenum操作数,这意味着您无法更改它们与内置类型一起使用的行为.

当运算符出现在表达式中,并且其操作数中至少有一个具有类类型或枚举类型时,则使用重载决策来确定要在其签名与以下内容匹配的所有函数中调用的用户定义函数:

我建议你使用std :: string intead char*,它提供operator ==.然后你可以避免使用std::strcmp()和这种类型的c风格的字符串函数.如果确实需要c样式的字符串,可以使用std :: basic_string :: c_str()在必要时将其转换回来.