对于C++类成员指针和成员函数,一般用的比较少,今天就简单说说,C++类的成员函数和成员指针。其实C++的成员函数和成员指针的调用主要是要清楚
->*操作符合.*操作符,一个是ptr->*member obj.*member,下面看看我写的演示代码
// made by davidsu33
//成员函数和成员指针的使用
//函数指针
#include "stdafx.h"
#include <iostream>
#include <cassert>
using namespace std;
class TestClass
{
public:
TestClass():m_member(0){};
int getSum(int x, int y)
{
return (x+y);
}
public:
int m_member;
};
//成员函数指针的定义不能写成如下
//*TestClass::MEM_FN_POINTER
//但在取函数地址的时候可以写成如下
//&TestClass::MEM_FN_POINTER
typedef int (TestClass::*MEM_FN_POINTER)(int x, int y);
//成员变量的指针定义
typedef int TestClass::*MEM_VAR_POINTER;
void test()
{
//对函数指针解引用后调用
TestClass tc;
//初始化成员函数
MEM_FN_POINTER mem_ptr = &TestClass::getSum;
int r = (tc.*mem_ptr)(10, 20);
cout<<"r="<<r<<endl;
//或者
TestClass *ptc = &tc;
r = (ptc->* mem_ptr)(10, 20);
cout<<"r="<<r<<endl;
//对函数成员进行调用,初始化成员指针
MEM_VAR_POINTER var = &TestClass::m_member;
assert(tc.m_member == 0);
tc.*var = 100;
assert(tc.m_member == 100);
ptc->*var = 200;
assert(tc.m_member == 200);
}
int _tmain(int argc, _TCHAR* argv[])
{
test();
getchar();
return 0;
}