C++中怎么自定义字面量
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章给大家分享的是有关C++中怎么自定义字面量,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。change_speed(Speed s
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
互联网黑科技
关于新基建和互联网科技
以房互联网科技
华中科技大学互联网
天津摩尔互联网科技
亿人帮互联网科技
深圳互联网科技怎么样
云创客互联网科技公司
农村开互联网科技讲堂
成都互联网科技公司100强
字节跳动和互联网科技
互联网科技有哪些公司
互联网科技与管理
厦门千工互联网科技有限公司
青岛科技大学互联网大赛研究生
互联网科技创新的路径
沐思想互联网科技有限公司
张召忠谈中国互联网科技
有人说阿里系是互联网科技企业
数字科技和互联网金融哪个好
瑰夏咖啡
互联网核心科技是什么
互联网科技战争
金融科技创新监管互联网金融
一五八零互联网科技
互联网和黑科技的看法
移动互联网科技公司
互联网科技和信息
广州互联网高科技取餐柜
六子台科技互联网展会