指向类成员指针(仅作了解用)

来源:互联网 发布:天之刃数据库 编辑:程序博客网 时间:2024/05/16 01:28

说明:首先本文涉及的只是对于C++的特性稍作深入了解,在实际开发中应用可能不多。纯属概念和感性认识吧!O(∩_∩)O~

 

相对于一般的指针,指向一个类成员的指针稍微有点“怪异”,不过,当你理解了其原理以后,你就不会这么觉得了。

对于一般的指针来说,它被定义为一个指向某个“地址”的变量,但是,对于指向类成员的指针来说,这个类并是没有被实例化的,所以,不存在真正意义上的指针,这里说的“地址”,就是相对于这个类的偏移量。

 

class Simple
{
   int  a;  //成员变量
   int fun(float); //成员函数
}

int (Simple:: *ip) = &Simple::a;  //指向类成员变量
int (Simple:: *pf)(float) = &Simple::fun; //指向类成员函数

实例:
#include<iostream>
using namespace std;

class Test
{
public:
 int fun(float)
 {
  cout << "Test::fun" << endl;
  cout << "a=" << a << endl;
  cout << "b=" << b << endl;
  return 1;
 }
public:
 int a;
 int b;
};

int main()
{
 Test t;
 Test* pTest = &t;

 int (Test::*pInt) = &Test::a;  //成员变量指针初始化
 t.*pInt = 1;

 pInt = &Test::b;
 pTest->*pInt = 2;

 int (Test::*pFun)(float) = &Test::fun;  //成员函数指针初始化:注意参数和返回值
 pTest->fun(1);
 (pTest->*pFun)(1.0); //函数调用:注意参数写法

 return 0;
}

原创粉丝点击