C++成员指针和成员函数的操作

对于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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值