C++中怎么自定义字面量
发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,本篇文章给大家分享的是有关C++中怎么自定义字面量,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。change_speed(Speed s
千家信息网最后更新 2024年10月17日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安全错误
数据库的锁怎样保障安全
珠海市嘻嘻网络技术有限公司
互联网科技公司企业文化标语
护苗网络安全全部
医疗保护网络安全建议
增减挂钩数据库
学术文章摘要型数据库
互联网科技公司北京
群晖企业服务器
国内数学软件开发公司
广电网络技术发展中心
深圳软件开发者报价
电脑如何连接学校的服务器
南宁运维网络技术有限公司
游戏为啥不能用云服务器
vb远程数据库
互联网科技公司的财务风险
考研网络安全介绍
论坛如何建数据库
服务器访问安全
上海联想服务器维修调试哪家便宜
网络安全n e代表什么
甘肃正规网络技术服务标准
数据库查询多条显示
数据库自己挂了然后自己重启了
黑哥网络安全之前是干什么的
无锡编译分布式存储服务器
在服务器上添加网站
服务器登录不了千牛
无线网络技术应用前景
计算机网络技术第一版