c++ - 运算符“”在 C++ 中做了什么?
问题描述
你怎么称呼这个运营商?
除了创建自定义文字之外,您可以将它用于其他事情吗?
示例用法:(参见cppreference)
constexpr long double operator"" _deg ( long double deg )
{
return deg * 3.14159265358979323846264L / 180;
}
解决方案
它的主要用途operator""
是创建用户定义的文字。从参考:
通过定义用户定义的后缀,允许整数、浮点、字符和字符串字面量生成用户定义类型的对象。
您可以像调用任何其他重载运算符一样调用此运算符:
std::cout << 42.5_deg; // with convenient operator syntax
std::cout << operator"" _deg(42.5); // with an explicit call
并非完全不相关:正如您对问题的评论中指出的那样,这个例子的名字很糟糕。它以度为单位并返回弧度,因此它可能应该命名为operator"" _rads
. UDL 的目的是提供方便、易于阅读的语法,以及一个隐藏它所做的事情的函数,它积极地破坏了这一点。
您可以使用此运算符进行几乎任何您想要的计算(对类型的限制,以及传入的参数数量,类似于其他运算符),例如:
constexpr long double operator"" _plus_one ( long double n )
{
return n + 1;
}
尽管此运算符的用法仍与上述相同。
这是一个演示。
推荐阅读
- android - 在 LifecyclerObserver 中使用 findViewbyId 以传统方式查看绑定
- python - 带有连锁回调的芹菜和弦
- javascript - 当我对消息做出反应时,如何添加删除消息的代码?不和谐.js
- android - 自 5 月 19 日以来,Google Play 控制台上的 ANR 异常增加
- angular - Angular - 如何将数组参数路由到新的模态组件
- mysql - mysql select for update 是如何工作的
- flutter - 找不到正确的提供者
在此 SignUpIdols 小部件上方 - flutter - Flutter dart 将 hive 保存的数据导出到文件以供以后检索
- laravel - Laravel JWT Auth Invalidate token - 一次允许一个设备
- css - 如何将两列合并为一行(wordpress)?