码迷,mamicode.com
首页 > 编程语言 > 详细

C++11 用户自定义字面值

时间:2016-02-18 19:53:29      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

用户自定义字面值,或者叫“自定义后缀”更直观些,的主要作用是简化代码的读与写,比如:

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 用户自定义字面值

标签:

原文地址:http://www.cnblogs.com/lzxskjo/p/5198947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!