C++中怎么自定义字面量
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇文章给大家分享的是有关C++中怎么自定义字面量,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。change_speed(Speed s
千家信息网最后更新 2025年12月02日C++中怎么自定义字面量
本篇文章给大家分享的是有关C++中怎么自定义字面量,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
change_speed(Speed s); // better: the meaning of s is specified // 较好:定义了s的含义// ...change_speed(2.3); // error: no unit 错误:没有单位change_speed(23m / 10s); // meters per second 米每
第1行是函数声明,第4行是简单的调用调用都没有什么可说的,第5行就不一样了:竟然可以支持带单位运算!
一般来讲,C++或者C语言都支持类似于25L之类的写法,这里的L就是字面量运算符。从C++11开始,C++语言引入的一项技术:通过重载operator ""(双引号)后缀运算符实现的(称为literal operator,字面量运算符)。
假设我们有如下一个Distance类:
struct Distance{ explicit Distance(doubleval) :meters(val) {} long double meters{ 0 };};我们可以定义如下的字面量运算符用以支持m和km单位:
Distance operator""km(long doubleval){ return Distance(val * 1000);}Distance operator""m(long doubleval){ return Distance(val);}Distance operator""km(unsigned long long val){ return Distance(val * 1000);}Distance operator""m(unsigned long long val){ return Distance(val);}经过这样的定义之后,以下的代码都是合法的:
Distance d0{ 1000 };Distance d1{ 1.0km };其中第二种形式定义d1之后,d1.meters的值是1000。我们也可以以同样的方式定义一个Time类,这个类支持sec和hour单位:
struct Time{ explicit Time(doubleval):seconds(val) {} long double seconds{ 0 };};Time operator""sec(long doubleval){ return Time(val);}Time operator""hour(long doubleval){ return Time(val * 3600);}Time operator""sec(unsigned long long val){ return Time(val);}Time operator""hour(unsigned long long val){ return Time(val * 3600);}接下来的定义支持除法运算符的Speed类就是常规操作了:
struct Speed{ explicit Speed(doubleval) :speed(val) {} long double speed;};Speed operator /(Distance d, Time t){ return Speed(d.meters / t.seconds);}这些准备工作完成之后,就可以像下面这样编程了:
int main(){ Distance d0{ 1000 }; Distance d1{ 1000.0m }; Time t1{ 2.0hour }; Speed s1(d1 / t1); std::cout << "s1=" << s1.speed << "m/s" << std::endl; Speed s2{ 7.8km / 1sec }; std::cout << "s2=" << s2.speed << "m/s" << std::endl; return 0;}以上就是C++中怎么自定义字面量,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
运算
字面
运算符
支持
C++
单位
就是
更多
知识
篇文章
语言
工作
合法
实用
一般来讲
接下来
代码
写法
函数
后缀
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
打开数据库备份
手机网游软件开发
电力网络安全和网络管理
汽车车载网络技术考试复习
福建智博网络技术
湖南服务器机柜厂家直销虚拟主机
部队网络安全法纪警示教育新闻
计算机网络技术与应用第三章
我的世界服务器下载失败怎么办
浙江安卓软件开发哪家好
我县考察华中科大网络安全学院
网络安全目标包括什么内容
geomap数据库导入
衢州品牌网络技术哪家好
沪州网络技术有限公司
pr媒体缓存数据库在哪
江南大队网络安全检查
ict数据通信与网络技术
网络安全在哪举办的
计算机网络技术是不是热门
怎么修改服务器的下载权限
mysql查询两个数据库
如何做数据库的迁移
天使动漫吧服务器安全狗
天平数据库
云服务器类型
江苏哪个服务器有肯德基虚拟主机
公益网络安全宣传官证书要钱吗
湖北pdu服务器专用电源购买
漯河哪个学校有计算机网络技术