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

What does the operator"" do in C++?

你怎么称呼这个接线员?

除了创建自定义文字之外,你能用它做其他事情吗?

用法示例:(参见cppreference

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

operator"" 的主要用途是创建 user-defined-literals。来自 reference:

Allows integer, floating-point, character, and string literals to produce objects of user-defined type by defining a user-defined suffix.


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

std::cout << 42.5_deg;                // with convenient operator syntax
std::cout << operator"" _deg(42.5);   // with an explicit call

并非完全无关:正如对您的问题的评论中所指出的,这个例子的命名很糟糕。它采用度数和 returns 弧度,因此它可能应该命名为 operator"" _rads。 UDL 的目的是提供方便、易于阅读的语法,而一个谎言其功能的功能会积极破坏这一点。


您可以使用此运算符进行几乎任何您想要的计算(对传入参数的类型和数量有限制,类似于其他运算符),例如:

constexpr long double operator"" _plus_one ( long double n )
{
    return n + 1;
}

虽然这个运算符的用法仍然和上面一样

这是一个demo