字符串运算符,如std::String
String operator like std::string
假设我有一个函数:
void foo(const std::string& str);
我可以称之为
foo("my string");
std::string
如何接受字符串来代替类型?是超载的操作员吗?我正在制作自己的字符串类,这个特性是必不可少的。
给定一个调用
foo("my string");
编译器必须经过各种步骤来决定应该解析到哪个函数调用
- 找出给定范围内的所有函数
foo
- 如果有多个名为
foo
的函数,它将尝试找到所有可用给定参数调用的可行函数。如果有多个匹配项,它将尝试在给定参数的情况下找到最佳匹配项。如果只有一个可行的函数,那么编译器继续。如果没有可行的函数,就会出现编译错误 - 如果只有一个名为
foo
的函数,它将尝试查看用于调用该函数的参数是否与参数类型匹配。如果是,则编译器继续。否则,将出现编译器错误
计算参数是否与函数的参数类型匹配的逻辑太长,此处无法描述。你可以在上阅读更多关于它的信息http://en.cppreference.com/w/cpp/language/overload_resolution和http://en.cppreference.com/w/cpp/language/implicit_conversion.
在您的情况下,可以使用std::string
的构造函数将"my string"
转换为std::string
。呼叫
foo("my string");
相当于:
foo(std::string("my string"));
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- 使用 std::string () const 函数启动线程或未来
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 如何更改大小(std::string)
- std::string 的对象真的可以移动吗?
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- C++:考虑C++ std::string 中双引号 (") 的字面含义,而不使用反斜杠 (\)
- 'int main(int, int, std::__cxx11::string, std::__cxx11::string)'只需要零或两个参数 [-Wmain]
- C++ 在列表和列表之间选择返回类型<<string>std::p air<string,string>>
- std::string, std::wstring and UTF8
- uan inplace replacement of std::string/std::wstring?
- #define Glib::string std:wstring
- 从 std::string & std::wstring 中获取 char 整数值
- BSTR转换为std::string(std::wstring),反之亦然