我想问,
string :: string运算符的功能如何,我知道它是使用字符串的标准构造函数,但是 operator 的作用是什么?到底允许我使用乘法运算符吗? Size_t代表对象的大小,string&是引用传递。这些概念如何理解?
#include <iostream>
#include <string>
using namespace std::literals::string_literals;
std::string operator*(std::size_t n, const std::string& s)
{
std::string ret;
while (n--)
ret += s;
return ret;
}
int main()
{
std::cout << 5 * std::string("Hallo") << std::endl;
std::cout << 5 * "Test"s << std::endl;
}
std :: string ret是什么意思,由于std :: string我可以使用它吗?因为std :: string是在开头定义的?
答案 0 :(得分:1)
通过实现operator*
,您可以将类型size_t
与类型string
“相乘”。之所以用引号引起来,是因为您自己实现了“乘”的含义。在此特定的实现中,string
仅附加了其自身n
次。
所以5 * std::string("Hallo")
将导致HalloHalloHalloHalloHallo