全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++中的用户定义字面量(User-defined literals)是什么?(代码示例)

C++用户定义字面量是编译期重载的operator""函数,支持整数、浮点、字符串、字符四类字面量,通过自定义后缀(如_km、_sv)构造任意类型对象,需声明为constexpr且无链接,提升可读性与类型安全。

C++中的用户定义字面量(User-defined literals)是一种允许程序员为自定义类型添加类似内置字面量语法(如 123_ms"hello"_s)的机制,本质是编译期重载的后缀操作符函数。

基本语法和声明形式

用户定义字面量以 operator "" 开头,后接自定义后缀名(必须以非下划线开头,如 km_deg),函数参数取决于字面量类型:

  • 整数字面量(如 42_km)→ 参数为 unsigned long long
  • 浮点字面量(如 3.14_rad)→ 参数为 long double
  • 字符串字面量(如 "abc"_s)→ 参数为 const char*std::size_t
  • 字符字面量(如 'a'_tag)→ 参数为 charwchar_t

常见实用示例

1. 单位转换(距离)

struct Distance {
    double km;
    Distance(double k) : km(k) {}
};

Distance operator"" _km(long double val) { return Distance(static_cast(val)); }

auto d = 5.5_km; // 类型为 Distance,d.km == 5.5

2. 字符串字面量转 std::string_view(C++17 起高效)

#include 

constexpr std::string_view operator"" _sv(const char* s, size_t len) { return std::string_view{s, len}; }

auto sv = "hello"_sv; // 类型为 std::string_view,零拷贝

3. 自定义整数解析(如二进制字面量)

constexpr int operator"" _bin(unsigned long long n) {
    int result = 0;
    unsigned long long mult = 1;
    while (n) {
        result += (n % 10) * mult;
        mult *= 2;
        n /= 10;
    }
    return result;
}

static_assert(1010_bin == 10); // 1010₂ = 10₁₀

关键规则与注意事项

用户定义字面量函数必须是 constexpr(若希望用于常量表达式)、无链接(通常定义在命名空间内或设为 inline),且后缀名不能与标准库冲突(如不能用 _s 表示秒,因为 std::chrono 已定义;但可自定义为 _sec)。

它不改变字面量本身的存储方式,只提供一种“语法糖”式的构造入口,返回值可以是任意类型(包括临时对象)。

基本上就这些。用得好能显著提升领域代码的可读性和类型安全性,比如物理*、嵌入式单位建模中很自然。


# c++  # 标准库  # 常量  # 命名空间  # const  # 字符串  # char  # double  # wchar_t  # operator  # 对象  # 自定义  # 浮点  # 是一种  # 下划线  # 设为  # 只提供  # 它不  # 能与  # 如不  # 用得 


相关文章: 广州营销型建站服务商推荐:技术优势与SEO优化解析  已有域名和空间如何快速搭建网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  常州企业建站如何选择最佳模板?  建站之星北京办公室:智能建站系统与小程序生成方案解析  如何制作算命网站,怎么注册算命网站?  如何选购建站域名与空间?自助平台全解析  如何挑选最适合建站的高性能VPS主机?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  建站主机如何选?高性价比方案全解析  制作企业网站建设方案,怎样建设一个公司网站?  建站之星在线版空间:自助建站+智能模板一键生成方案  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  如何在七牛云存储上搭建网站并设置自定义域名?  音响网站制作视频教程,隆霸音响官方网站?  网站微信制作软件,如何制作微信链接?  如何快速生成凡客建站的专业级图册?  免费网站制作appp,免费制作app哪个平台好?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  购物网站制作公司有哪些,哪个购物网站比较好?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何用搬瓦工VPS快速搭建个人网站?  制作电商网页,电商供应链怎么做?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  宝塔建站无法访问?如何排查配置与端口问题?  如何用VPS主机快速搭建个人网站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  Python多线程使用规范_线程安全解析【教程】  实例解析angularjs的filter过滤器  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  公司门户网站制作流程,华为官网怎么做?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  建站之星如何优化SEO以实现高效排名?  如何配置支付宝与微信支付功能?  如何用花生壳三步快速搭建专属网站?  如何自定义建站之星网站的导航菜单样式?  高端网站建设与定制开发一站式解决方案 中企动力  linux top下的 minerd 木马清除方法  建站之星后台管理如何实现高效配置?  一键网站制作软件,义乌购一件代发流程?  如何在IIS管理器中快速创建并配置网站?  建站之星好吗?新手能否轻松上手建站?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  建站与域名管理如何高效结合?  如何在建站主机中优化服务器配置? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。