C++11 用户自定义字面值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++11 用户自定义字面值相关的知识,希望对你有一定的参考价值。
用户自定义字面值,或者叫“自定义后缀”更直观些,的主要作用是简化代码的读与写,比如:
auto mo = chrono::seconds(+1); auto mo = +1s;
这两行是等价的,但是使用后缀的方式明显更简洁。
C++11允许用户创建自已的字面值。先看一个示例:
#include <iostream> using namespace std; typedef unsigned long long ull; // C++11 2.14.8 ull operator"" _dog(ull n) { return n*20000; } int main() { auto n = 3_dog; cout << "your wage is" << n << " RMB" <<endl; }
自字义后缀用operator""定义,就是一种特殊的函数。后缀名必须以下划线开头,因为没有下划线的后缀是留给std用的。后缀的参数只能是unsigned long long、long double、const char*或者const char* + size_t。没了,它就是这么简单易上手又很实用的特性。一般来说适合编为后缀的是单位,如kg,km。
C++14预定义了一些标准的字面量,s用于创建std::string,如 "hello"s;h、min、s、ms、us、ns用于创建std::chrono::duration;i、il、if用于创建复数complex<double>、complex<long double>、complex<float>。
以上是关于C++11 用户自定义字面值的主要内容,如果未能解决你的问题,请参考以下文章