运算符“”在C ++中做什么?

问题描述

您如何称呼此操作员?

除了创建自定义文字外,您还可以将其用于其他用途吗?

用法示例:(请参见cppreference

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

解决方法

operator""的主要用法是创建用户定义的文字。来自reference

通过定义用户定义的后缀,允许整数,浮点数,字符和字符串文字产生用户定义类型的对象。


您可以像调用其他任何重载运算符一样调用此运算符:

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;
}

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

这里是demo