C++11引入用户定义字面量,通过operator""定义带下划线后缀的自定义处理函数,支持整数、浮点数、字符串等类型,实现如5_km表示公里、3.5_s表示秒的直观语法,提升代码可读性与类型安全,需注意后缀以下划线开头、避免重载标准后缀,并推荐使用constexpr保证编译期计算。

在C++11中,引入了“用户定义字面量”(User-defined literals)这一特性,允许开发者为内置的字面量(如整数、浮点数、字符串等)添加自定义后缀,并绑定到特定函数,从而实现更直观、类型安全的代码表达。例如,你可以写 5_km 来表示5公里,或 3.5_s 表示3.5秒。
用户定义字面量通过在字面量后添加一个下划线开头的后缀来触发自定义处理。其核心是定义一个以 operator "" 开头的特殊函数。这类函数必须声明在命名空间或全局作用域中,且参数类型由字面量的种类决定。
基本形式如下:
operator "" _suffix(parameter_list)其中 suffix 是你自定义的后缀名(以下划线开头),parameter_list 的类型取决于字面量类型。
立即学习“C++免费学习笔记(深入)”;
根据字面量的不同,编译器会自动将字面量转换为对应参数传给 operator "" 函数。常见类型包括:
下面是一些实用的自定义字面量例子:
1. 定义距离单位
constexpr long double operator"" _km(long double km) {使用方式:
auto distance = 3.5_km; // 返回 3500.0 (米)2. 定义时间单位
constexpr long double operator"" _s(long double seconds) {3. 字符串字面量后缀
std::string operator"" _str(const char* s, size_t len) {使用:
auto text = "hello"_str; // 转为 std::string4. 自定义布尔字面量(虽然不推荐覆盖标准)
constexpr bool operator"" _true() {使用用户定义字面量时需注意以下几点:
基本上就这些。合理使用用户定义字面量可以让代码更具可读性和领域表达力,尤其适用于物理单位、时间、货币等场景。关键是设计清晰、语义明确的后缀,避免滥用。
以上就是C++如何自定义字面量_C++11用户定义字面量(User-defined literals)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号