网站域名服务器查询,企业品牌网站建设我们的优势,wordpress 链接格式,信号增强器设置网站普通类成员函数指针
先定义一个公鸡类Cock#xff0c;只有一个函数Shout#xff0c;功能是输出一个字符串。
接着定义函数指针类型PFN_Shout。
main函数中代码PFN_Shout pfn_Shout Cock::Shout;和void (Cock:: * pfn_Shout)() Cock::Shout;的功能相同#xf…普通类成员函数指针
先定义一个公鸡类Cock只有一个函数Shout功能是输出一个字符串。
接着定义函数指针类型PFN_Shout。
main函数中代码PFN_Shout pfn_Shout Cock::Shout;和void (Cock:: * pfn_Shout)() Cock::Shout;的功能相同都是创建一个类成员函数指针对象。最后是使用对象和对象指针调用函数指针的形式。
#include iostream
class Cock {
public:void Shout(){std::cout WoWo std::endl;}
};
typedef void (Cock::* PFN_Shout)(); // 类Cock成员函数指针类型定义.
int main()
{//PFN_Shout pfn_Shout Cock::Shout; // 与下句功能相同void (Cock:: * pfn_Shout)() Cock::Shout;Cock cock;(cock.*pfn_Shout)();Cock *pCock new Cock;(pCock-*pfn_Shout)();
delete pCock;
}
运行结果
WoWo
WoWo
类虚函数函数指针
先定义一个纯虚基类Animal并声明两个虚方法shout和sing然后定义Animal的派生类Dog和Cat并实现上述两个方法。
接下来定义一个动物表演类模板AnimalShow在类模板的定义中使用代码
typedef void (Beast:: * Shout)();
typedef void (Beast:: * Sing)(const char*);
定义了模板参数类的成员函数指针。并定义了方法ShowShout和showSing。
函数main展示了函数指针的用法。
#include iostream
class Animal {
public:virtual void shout() 0;virtual void sing(const char*) 0;
};
class Dog:public Animal {
public:virtual void shout() {std::cout Dog Shout: Wang std::endl;}virtual void sing(const char* s) {std::cout Dog Sing: s std::endl;}
};
class Cat :public Animal {
public:virtual void shout() {std::cout Cat Shout: Miao std::endl;}virtual void sing(const char* s) {std::cout Cat Sing: s std::endl;}
};
// 动物表演
template typename Beast
class AnimalShow {
public:// 成员函数指针typedef void (Beast::* Shout)(); typedef void (Beast::* Sing)(const char*);// 动物喊void ShowShout(Beast* b, Shout s) {(b-*s)();}// 动物唱歌词wordsvoid ShowSing(Beast* b, Sing s, const char* words) {(b-*s)(words);}
};int main()
{Dog* pDog new Dog;Cat* pCat new Cat;std::string words;AnimalShowDog dogShow;dogShow.ShowShout(pDog, Dog::shout);words I am a dog!;dogShow.ShowSing(pDog, Dog::sing, words.c_str());AnimalShowCat catShow;catShow.ShowShout(pCat, Cat::shout);words I am a cat!;catShow.ShowSing(pCat, Cat::sing, words.c_str());delete pDog;delete pCat;return 1;
}
运行结果
Dog Shout: Wang
Dog Sing: I am a dog!
Cat Shout: Miao
Dog Sing: I am a cat!