c++ 成员指针

今天在分析老师上课讲的成员变量指针的代码时,遇到了一些问题,下面是通过查找资料进行的一些整理

1 成员指针是什么?

形象来说,成员指针就是在一个对象内部定位某一个成员的方式。

2 如何定义一个成员指针呢‘

class A{

public:

int x;

int y;

};

对于这个类A,我们定义它的成员x的指针

int A::*p=&A::x 其中int根据x变量的数据类型来确定。

那么A a; a.*p的作用就等价于a.x了

3 关于存在继承的情况

class B:public A{

public:

int z;

};

那么下面代码的执行

int A::*p=&A::x;

int B::*q=&B::x;

A a={20,30}

B b;

b.x=21;

b.y=31;

cout<<a.*p<<endl; //20

cout<<b.*p<<endl;  //21

cout<<a.*q<<endl;  //错误操作

cout<<b.*q<<endl;  //21

p=&B::x;  //可行且值仍为&A::x

p=&B::z;  //无法将'int B::*'转为'int A::*'

q=&A::x;  //可行且值为&A::x

我们可以知道 1无法在父类中使用子类的成员指针 2 只要是指向父类成员的指针,其值一直为A::

4 关于成员函数指针

与成员变量的使用类似

void (A::*pFun)()=&A::fun;

(a.*pFun)();//这样我们就可以使用类A中的成员函数了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值