【C++】学习笔记草稿版系列9(指向类成员的指针)

类数据成员
1. 数据成员
2. 函数成员

定义

<数据类型><类名>::*<指针名>

赋值&初始化

<数据类型><类名>::*<指针名>[=&<类名>::<非静态数据成员>]
//和类发生关系,整个过程没有和对象发生关系

指向类成员的指针
类名::成员名
类名::成员函数名

// 类
成员类型 类名::*指针名 = &类名::成员名;
函数返回类类型 (类名::*函数指针名)(参数列表) = &类名::成员函数名;
// 对象
// .* ->*
对象.*数据成员指针
对象指针->*数据成员指针

(对象.*成员函数指针)()
(对象指针->*成员函数指针)()
class Widget
{
public:
    Widget()
    {
        pa[0] = &f;
        pa[1] = &g;
        pa[2] = &i;
        pa[3] = &j;
    }
    void select(int idx)
    {
        (this->*pa[idx])();
    }
private:
    void f(){cout<<"void f()"<<endl;}
    void g(){cout<<"void g()"<<endl;}   
    void i(){cout<<"void i()"<<endl;}
    void j(){cout<<"void j()"<<endl;}

    enum{cnt = 4}; 
    void(Widget::f*pa[cnt])() = {f, g, i, j};
}
// 不同的平台对Widget::f的需要也不同

int main()
{
    Widge w;
    w.select(int idx);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值