定义指向类成员的指针


定义指向类里的数据成员时:

int ObjectClass::*pointerToMember = &ObjectClass::a;

因为仅仅提到了一个类而非那个类的对象,所以没有ObjectClass::a的确切“地址”,因而&ObjectClass::a仅是作为成员指针的语法被使用。

使用时:

object.*pointerToMember = 1;    OR     objectpointer->*pointerToMember=1;

定义指向类里的函数指针时:

int (ObjectClass::*fp) (int) = &ObjectClass::function;(这里的&不能省略,但是可以给出不含参数列表的函数标识符,因为重载方案可以由成员指针的类型决定)

使用时:

(object.*fp)(1);          OR    (objectpointer->*fp)(1);

在给成员指针初始化时,要写上类的名称 (&objectClass::function) 在类里面时候,可能认为没必要加类名写成 &function, 但是这不符合成员函数的语法。语法要求带上类名。

在间接引用时也要指明对象,如在类里可能认为写成 (*fp)(1)就行了,但是语法要求带上对象,(this->*fp)(1);


------------------------
以上内容都出自thinking in c++的第11章。
写在这里仅是为了总结一下看完这一章的收获。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nwao7890

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值