在cppreference上有这个例子(http://en.cppreference.com/w/cpp/language/user_literal):
void operator"" _print ( const char* str )
{
std::cout << str;
}
int main(){
0x123ABC_print;
}
输出: 0x123ABC
我不明白这是在做什么。一开始我以为 0x123ABC
只会被当作一个字符串,但是 0x123ABCHello_print
无法编译通过。然后我又认为 operator<<
被重载了,所以它总是用十六进制形式打印,但是 123_print
打印的是 123
。而且大小写敏感: 0x123abC_print
打印的是 0x123abC
。
有人能解释一下吗?一方面,它仅接受整数作为参数,但另一方面,它将它们像字符串常量一样处理。
size_t
类型的第二个参数来实现该运算符的字符串版本。 - Fred Larson