首页 > 解决方案 > 运算符“”在 C++ 中做了什么?

问题描述

你怎么称呼这个运营商?

除了创建自定义文字之外,您可以将它用于其他事情吗?

示例用法:(参见cppreference

constexpr long double operator"" _deg ( long double deg )
{
    return deg * 3.14159265358979323846264L / 180;
}

标签: c++operator-overloadinguser-defined-literals

解决方案


它的主要用途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;
}

尽管此运算符的用法仍与上述相同。

这是一个演示


推荐阅读