c++ - 深奥的 C++ 运算符

标签 c++ operators

以下深奥的 C++ 运算符的用途是什么?

指向成员的指针

::*

通过指针将指针绑定(bind)到成员

->*

通过引用绑定(bind)指向成员的指针

.*

( reference )

最佳答案

指向成员的指针允许您拥有一个相对于特定类的指针。

所以,假设您有一个包含多个电话号码的联系人类。

class contact
{
    phonenumber office;
    phonenumber home;
    phonenumber cell;
};

这个想法是,如果你有一个需要使用电话号码的算法,但应该在算法之外决定哪个电话号码,指向成员的指针可以解决问题:

void robocall(phonenumber contact::*number, ...);

现在robocall的调用者可以决定使用哪种类型的电话号码:

robocall(&contact::home, ...);    // call home numbers
robocall(&contact::office, ...);  // call office number
一旦有了指针,

.*->* 就会发挥作用。所以在robocall里面,你会这样做:

contact c = ...;
c.*number;    // gets the appropriate phone number of the object

或:

contact *pc = ...;
pc->*number;

关于c++ - 深奥的 C++ 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806769/

相关文章:

c++ - 无法在 OpenGL 中正确渲染图像/纹理,我做错了什么?

c++ - 多线程应用程序的最佳排序

c++ - 创建尺寸可变的二维数组

c - 为什么我不能通过它的指针访问这个结构?

c++ - 为什么构造函数在对象调用时使用不同的运算符 - String& vs Char*?

c - 需要对此进行一些澄清

javascript - if 语句中表达式的顺序

c++ - 成员类应该如何访问成员函数?

c++ - 以迭代器为参数的模板函数

c++ - 如果类对象需要在 C++ 中转换为 int,为什么会调用 "operator bool()"?