Use*_*645 5 c++ operator-overloading user-defined-literals
你怎么称呼这个接线员?
除了创建自定义文字之外,您可以将它用于其他用途吗?
示例用法:(参见cppreference)
constexpr long double operator"" _deg ( long double deg )
{
return deg * 3.14159265358979323846264L / 180;
}
Run Code Online (Sandbox Code Playgroud)
其主要用途operator""是创建用户定义的文字。来自参考:
允许整数、浮点、字符和字符串文字通过定义用户定义的后缀来生成用户定义类型的对象。
您可以像调用任何其他重载运算符一样调用此运算符:
std::cout << 42.5_deg; // with convenient operator syntax
std::cout << operator"" _deg(42.5); // with an explicit call
Run Code Online (Sandbox Code Playgroud)
并非完全无关:正如对您的问题的评论所指出的,这个例子的名字很糟糕。它以度为单位并返回弧度,因此它可能应该命名为operator"" _rads。UDL 的目的是提供方便、易于阅读的语法,而隐瞒其用途的函数会积极破坏这一点。
您可以使用此运算符执行几乎任何您想要的计算(对类型和传入参数的数量进行限制,类似于其他运算符),例如:
constexpr long double operator"" _plus_one ( long double n )
{
return n + 1;
}
Run Code Online (Sandbox Code Playgroud)
尽管该运算符的用法仍然与上面相同。
这是一个演示。