c++ - 运算符""在 C++ 中有什么作用?

标签 c++ operator-overloading user-defined-literals

你怎么称呼这个接线员?
除了创建自定义文字之外,您可以将它用于其他用途吗?
用法示例: (见 cppreference)

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

最佳答案

这个的主要用法operator""是创建用户定义的文字。来自 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
并非完全不相关:正如对您的问题的评论所指出的那样,这个例子的名字很糟糕。它接受度数并返回弧度,所以它应该被命名为 operator"" _rads . UDL 的目的是提供方便、易于阅读的语法,以及一个关于它所做的事情的函数,它积极地破坏了这一点。

您可以使用此运算符进行几乎任何您想要的计算(对类型和传入参数的数量进行限制,类似于其他运算符),例如:
constexpr long double operator"" _plus_one ( long double n )
{
    return n + 1;
}
尽管此运算符的用法仍与上述相同。
这是一个 demo .

关于c++ - 运算符""在 C++ 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63375208/

相关文章:

c++ - C++ 中的固定宽度整数文字?

c++ - 这个字符串加法是一个有效的表达式吗?

c++ - 使用用户定义文字的成员时出现编译错误

c++ - 使用 clocks_per_sec 计算过剩帧率太慢

c++ - 有没有办法警告我全局命名空间污染?

c++ - Netbeans 6.9.1 在 Ubuntu 上查找库时出现问题

r - R 中 S4 对象的总和

c++ - 使用 struct 作为 map 的 KEY 和 VALUE。 find() 操作给出错误

c++ - 当您可以使用构造函数时,为什么要在 C++ 类或结构中重载 () 运算符(可调用运算符)?

c++ - 以下代码是单个文件中的文件读/写。但是此代码无法创建文件