用户自定义字面量

在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;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容