在c++11中,运行用户自定义字面量了。即你可以通过一个后缀来标识字面量是什么类型。
自定义函数
返回类型 operator "" _xxxx(unsigned long long v){
return {(unsigned int)v};
}
如果字面量为整型数,那么字面量操作符函数只可接受unsinged long long 或者const char为其参数。当unsigned long long 无法容纳该字面量的时候,编译器会自动将字面量转换为以\0为结束符的字符串,并调用以const char为参数的版本进行处理。
如果字面值为浮点型:,字面量操作符只接受 long double 或者 const char * 作参数. 同理, 如果 long double 容纳不下, 调用 const char * 版本处理函数.
字面量为 const char *: 操作符参数只接受 (const char *, size_t_).
字面值为 char: 字面量操作符参数只能为 char.
在字面量操作符函数的什么中,operator "" 与用户自定义后缀之间必须有空格。
后缀建议以下划线开始。不宜使用非下划线后缀的用户自定义字符串常量,会引起编译器警告。
附上个例子
struct Watt { unsigned int v; };
Watt operator "" _w(unsigned long long v) {
return {(unsigned int) v};
}
int main() {
Watt capacity = 1024_w;
}
网友评论