c++的特殊用法讲解
class BaseClass { public: BaseClass(); void Fun1(); }; void (BaseClass::*pmfnFunc1)() = &BaseClass::Fun1; class Derived : public BaseClass { public: Derived(); void Func2(); }; void (Derived::*pmfnFunc2)() = &Derived::Func2; int main() { BaseClass ABase; Derived ADerived; (ABase.*pmfnFunc1)(); //(ABase.*pmfnFunc2)(); (ADerived.*pmfnFunc1)(); (ADerived.*pmfnFunc2)(); return 0; }
函数指针的用法:
先看一段代码吧
typedef void (*EVALUATOR)(int); class Parameter{ EVALUATOR pEvaluator; public: Parameter() {} inline EVALUATOR Evaluator(EVALUATOR peva) { pEvaluator=peva; return peva; } inline EVALUATOR Evaluator() { return pEvaluator; } };
#include <iostream> #include <cmath> #include <string> #include "Paramter.h" void add(int); int main(){ Parameter pa; pa.Evaluator(add); (*pa.Evaluator())(5); system("pause"); } void add(int a){ std::cout<<a<<std::endl; }