c++ 成员指针

xiaoxiao2021-02-28  93

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

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中的成员函数了。

转载请注明原文地址: https://www.6miu.com/read-32990.html

最新回复(0)