内置标准运算符可以有函数指针吗?
在 C 中,不能直接引用内置运算符的函数指针,因为它们实际上并不代表函数对象。根据 C 11 标准,内置运算符是专门为重载解析而设计的,不能用于其他目的。
克服限制:
解决方法为此,您可以使用标准库(第 20.8 节)中定义的函数对象。这些函数对象(例如用于比较的 equal_to)会衰减为其 operator() 函数中的等效运算符。它们可以作为函数指针的有效参数。
访问标准类运算符:
虽然内置运算符无法直接访问,但您可以使用标准库运算符函数指针。但是,您必须指定适当的模板实例来指导编译器。例如,如果要使用 std::basic_string 运算符,则需要显式指定其模板类型,如下所示:
<code class="cpp">typedef std::basic_string<char> string_type; ... std::cout << test_function<string_type>(a, b, &std::operator+) << std::endl;</code>
结论:
虽然内置运算符由于其独特的作用而无法拥有直接的函数指针,但您可以通过标准库提供的函数对象或通过为标准类运算符指定必要的模板实例来访问它们的功能。
以上是您可以在 C 中使用带有内置运算符的函数指针吗?的详细内容。更多信息请关注PHP中文网其他相关文章!