C++11开始,允许用户定义字面量,将四种基本类型转换成我们需要的类型
前置知识:字面量
用户定义自变量形式为:
返回类型 operator "" 用户自定义后缀(参数)
如:
//定义
constexpr int operator "" _S(double num)
{
return (num + 0.5);
}
//使用
auto res = 2.6_S; //res = int(2.6 + 0.5) = 3
其中用户自定义后缀尽可能使用“_”下划线作为开头,否则很可能会与C++原生的表示方式冲突,如2L
其实是long long 2
然而用户定义字面量也不是随意定义的,有如下规则限制:
1、字面量只可以使用四种基本类型:整型、浮点型、字符、字符串
2、若字面量为整型,参数只能为unsigned long long、const char*
,且当unsigned long long
无法容纳该字面量时,会将其转换为字符串,以’\0’结束,并调用const char *
参数版本的字面量函数
3、若字面量为浮点型,参数只能为unsigned double 和const char *
,当unsigned double
过长时,也会调用const char *
版本
4、若字面量为字符型,参数只能为一个char
5、若字面量为字符串,参数只能为const char*
(注意是与,传入两个参数)size_t
,即长度已知的字符串作为参数
6、operator "" [用户定义字面量后缀]
,注意中间必须有空格
图表来源:https://www.cnblogs.com/gyan083/p/16122633.html
基于用户定义自变量,我们将很方便使用指定类型的值,比如使用
240_V
代表240V,使用30.6_INT
代表30.6转换成int的值。
通过运用用户定义自变量,最主要的作用是减少代码量,通过使用字面量函数的临时变量返回值,可减少局部变量的定义,使代码书写起来也更加清晰