C++里的函数指针

今天在写一个小功能的时候,写了三个接口函数,结果代码基本类似,只是其中调用的函数不一样,而且这几个调用函数的声明是完全一样的。

根据代码的抽象三原则里的rules of three,应该得抽象一下了。。。

最直接的想法就是抽出一个共用函数,三个接口函数调用这个共用函数,通过传入不同的函数指针,来实现不同的功能。结果写着写着忘了函数指针怎么写了。。。人老了就是不行了,google吧。

 

网上关于函数指针的博文很多,其中我只需要如何定义和使用就OK了,所以下面就胡乱写个示例记在这里:

// 功能函数
void addPost(NodeObj* node)
{
node
->name += "_post";
}
void addPrefix(NodeObj* node)
{
node
->name = "pre_" + node->name;
}


class
NodeSet { public: void doWork( void (*func)(NodeObj*) ) { NodeObj* node = nodeSet->head(); for (int i=0; i<nodeSet->size(); i++) { func(node); node = node->next(); } } // 接口函数 void addPostName() { doWork(addPost); } void addPrefixName() { doWork(addPrefix); } protected: NodeObjSet* nodeSet; };

 

posted @ 2013-05-03 11:38  大龄程序员的日记本  阅读(178)  评论(0编辑  收藏  举报