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>。

时间: 2024-12-28 23:09:42

C++11 用户自定义字面值的相关文章

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

[1]为什么引入用户自定义字面量? 在C/C++程序中,常常会使用结构体或者类来创造新的类型,以满足实际的需求. 比如,在进行科学计算时,用户可能需要用到复数(通常会包含实部和虚部两部分). 对于颜色,用户通常会需要一个四元组(三原色及Alpha). 对于奥运会组委会,他们则常常会需要七元组(标示来自七大洲的状况)等等. 而当用户想声明一个自定义类型的“字面量”(literal)时,尤其显得麻烦.如下示例: 1 #include <iostream> 2 using namespace std

dede织梦数据表字段解释

提示:常用字段,可以在dede后台->系统->SQL命令行工具,执行sql语句来批量修改 dede_addonarticle   附加文章表   aid  int(11)  文章编号       typeid  int(11)  分类栏目编号       body  mediumtext  文章内容    dede_addonflash  附加Flash表    aid  int(11)  FLASH编号    typeid  int(11)  分类栏目编号       filesize  v

dedecms专栏----资料收集

主要数据结构表 dede_addonarticle:附加文章表 aid int(11) 文章编号 typeid int(11) 分类栏目编号 body mediumtext 文章内容 dede_addonflash 附加Flash表 aid int(11) FLASH编号 typeid int(11) 分类栏目编号 filesize varchar(10) 文件大小 playtime varchar(10) 播放时长 flashtype varchar(10) 作品类型 flashrank sm

计算机基础从入门到放弃

计算机基础 一.编程语言的作用及与操作系统和硬件的关系 语言的存在是为了沟通,在中国用华语,美国用英语,在计算机领域中也不例外,编程语言是让计算机能识别的语言,编程语言也是程序员与计算机沟通的桥梁. 与操作系统之间存在依赖关系,当用编程语言编写完一个软件的时候,却没有操作系统来控制计算机的硬件,那就必须要自己写一个操作系统来控制计算机硬件 当已经在计算机上安装了操作系统了,那么就不需要考虑控制计算机的硬件了,只考虑用户软件与操作系统之间是否兼容. 与硬件的关系,当软件安装到永久保存的硬盘上面,运

临时表VS表变量--因地制宜,合理使用

一直以来大家对临时表与表变量的孰优孰劣争论颇多,一些技术群里的朋友甚至认为表变量几乎一无是处,比如无统计信息,不支持事务等等.但事实并非如此.这里我就临时表与表变量做个对比,对于大多数人不理解或是有歧义的地方进行详细说明. 注:这里只讨论一般临时表,对全局临时表不做阐述. 生命周期 临时表:会话中,proc中,或使用显式drop 表变量:batch中 这里用简单的code说明表变量作用域 DECLARE @t TABLE(i int) ----定义表变量@t SELECT *FROM @t --

ecplise 工具的设置

1.设置背景色为护眼模式 改变字体颜色windows->Preferences->Java->Editor->Syntax Coloring右边选择Java 然后可以自由选择颜色了 Annotations(注释): 107, 147, 186  浅蓝色Deprecated members(不建议使用的成员): 0, 0, 0  Fields(字段): 128, 0, 128  紫色KeyWord 'return'(关键字'return'): 255, 0, 0   红色Keywor

dedecms程序核心程序和数据库目录及简介

1.程序核心程序目录及简介/include目录 程序核心目录config_base.php 环境定义文件.用于检测系统环境,定义工作目录,保存数据库链接信息,引入常用函数等,建议不要修改.config_hand.php 系统配置文件.定义系统常用的配置信息定义,可从后台管理直接生成该文件.config_passport.php 通行证文件config_rglobals.php 检测系统外部变量config_rglobals_magic.php 同上inc_archives_view.php 用于

struts2-19-合法用户上传文件

一:登录页面 成功:--->upload.jsp 失败:返回错误信息(用户名或者密码错误) 二:上传文件 登录成功:上传成功 未登录:--->login.jsp+错误信息(请登录) 三:设置拦截器  未登录不能上传文件  nuc.sw.interceptor--->loginIntercetor.java 1 package nuc.sw.interceptor; 2 3 import com.opensymphony.xwork2.Action; 4 import com.opensy

织梦dede_archives文章主表详细介绍

dede_archives文章主表,存放着各频道文章的主要信息,比如创建时间,所属栏目,所属频道,作者等详细的信息.     ID int(11) 自动编号typeid int(11) 所属主栏目编号typeid2 int(11) 所属副栏目编号sortrank int(11) 文章排序(置顶方法)iscommend smallint(6) 是否推荐ismake smallint(6) 是否生成静态channel int(11) 文章所属模型arcrank smallint(6) 阅读权限cli