您的位置:首页 > 编程语言 > C语言/C++

c++函数指针

2015-12-16 21:18 417 查看
// CallBackFunc.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <list>
#include <iostream>
using namespace std;

class TestA
{
public:
typedef void (TestA::*FuncPtr) ();

TestA()
{
m_listFuncs.push_back(&TestA::Func1);
m_listFuncs.push_back(&TestA::Func3);
m_listFuncs.push_back(&TestA::Func2);
}

void Func1()
{
cout << "这个是Func1" << endl;
}

void Func2()
{
cout << "这个是Func2" << endl;

Func3();
}

virtual void Func3()
{
cout << "这个是Func3" << endl;
}

void Exe()
{
while(m_listFuncs.size() > 0)
{
FuncPtr pFunc = m_listFuncs.front();
((*this).*pFunc)();

m_listFuncs.pop_front();
}
}

private:
std::list<FuncPtr> m_listFuncs;
};

class TestB : public TestA
{
public:
virtual void Func3()
{
cout << "TestB::Func3" << endl;
}
};

int _tmain(int argc, _TCHAR* argv[])
{
TestA * pTemp = new TestB;
pTemp->Exe();

system("pause");

return 0;
}


执行结果:



函数指针指向的函数仍然遵循多态规则
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: