c++ - .*、->* 和 .-> 在 C++ 中是什么意思?

标签 c++ c++11

我最近一直在学习如何使用 std::mem_fn 库工具。在 C++ Primer 第 5 版中,他们给出了 std::mem_fn 用法的示例,在以下代码片段中 svecvector 字符串:

auto f = mem_fn(&string::empty); // f takes a string or a string*

f(*svec.begin()); // ok: passes a string object; f uses .* to call empty

f(&svec[0]); // ok: passes a pointer to string; f uses .-> to call empty

注意:在上面的代码片段中没有使用 ->*

虽然我理解.*->*的用法。我不清楚。

所以,我的问题是 .*->*.-> 有什么作用?

最佳答案

你有一个对象 o 和一个指向它的成员 m 的指针。运算符 .* 允许您访问对象的指向成员:

o.*m

您有一个指向对象 p 的指针和一个指向其成员 m 的指针。运算符 ->* 允许您访问指向对象的指向成员:

p->*m

恐怕运算符 .-> 不存在。

关于c++ - .*、->* 和 .-> 在 C++ 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30962151/

相关文章:

c++ - 如何检索此数组的大小?

c++ - 如何静音/取消静音 BASS?

c++ - 如何声明 std::make_tuple 结果的类型,而不使用 auto

c++ - 为什么没有为所有变量报告 "unused variable"警告?

c++ - 我可以返回一个 vector 以使用 C++11 扩展现有 vector 吗?

c++ - 如何在正则表达式匹配结果中包含分隔符?

iphone - 内联函数的返回类型

c++ - 相互竞争的原子操作会互相饿死吗?

c++ - 我可以有一个 lambda 的 boost 无锁队列吗?

C++11、C++14、C++17?用什么?