operator""
时间: 2025-01-07 10:45:13 浏览: 0
### C++ 自定义字面量操作符
在 C++ 中,自定义字面量允许程序员创建新的后缀来扩展语言内置的字面量。这使得可以更直观地处理特定类型的值。
#### 定义自定义字面量操作符
通过声明带有 `operator""` 的函数模板实现自定义字面量:
```cpp
#include <iostream>
// 用户定义的字面量 _km 表示千米转米
constexpr long double operator "" _km(long double distance) {
return distance * 1000.0L;
}
int main() {
// 使用自定义字面量
long double d = 5_km;
std::cout << "Distance in meters: " << d << '\n';
}
```
上述代码展示了如何将 `_km` 后缀绑定到一个转换逻辑上[^1]。
对于整型字面量的支持同样重要:
```cpp
constexpr unsigned long long operator "" _Mbps(unsigned long long value) {
return value * 1'000'000ULL;
}
unsigned long long bandwidth = 10_Mbps;
```
此片段说明了怎样利用用户定义的字面量简化网络带宽表达方式[^2]。
当涉及到字符串或其他复杂数据结构时,也可以采用类似的机制:
```cpp
std::string operator ""_json(const char* str, size_t len) {
// 解析 JSON 字符串并返回解析后的对象...
return std::string(str, len);
}
auto config = R"({"key": "value"})"_json;
```
这里展示了一个假设性的例子,其中 `_json` 被用来标记应作为 JSON 对象处理的文字字符串[^3]。
阅读全文