#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
namespace _nmsp1
{
class A
{
public:
void myfunc1(int tempvalue1)
{
cout << "tempvalue1 = " << tempvalue1 << endl;
}
void myfunc2(int tempvalue2)
{
cout << "tempvalue2 = " << tempvalue2 << endl;
}
static void mysfunc(int tempvalue)
{
cout << "A::mysfunc()静态成员函数--tempvalue = " << tempvalue << endl;
}
};
void func()
{
A mya;
void (A:: * pmypoint)(int tempvalue) = &A::myfunc1;
pmypoint = &A::myfunc2;
(mya.*pmypoint)(15);
A* pmya = new A();
(pmya->*pmypoint)(20);
void(*pmyspoint)(int tempvalue) = &A::mysfunc;
pmyspoint(80);
}
}
namespace _nmsp2
{
class A
{
public:
void myfunc1(int tempvalue1)
{
cout << "tempvalue1 = " << tempvalue1 << endl;
}
void myfunc2(int tempvalue2)
{
cout << "tempvalue2 = " << tempvalue2 << endl;
}
static void mysfunc(int tempvalue)
{
cout << "A::mysfunc()静态成员函数--tempvalue = " << tempvalue << endl;
}
virtual void myvirfuncPrev(int tempvalue)
{
cout << "A::myvirfuncPrev()虚成员函数--tempvalue = " << tempvalue << endl;
}
virtual void myvirfunc(int tempvalue)
{
cout << "A::myvirfunc()虚成员函数--tempvalue = " << tempvalue << endl;
}
};
void func()
{
void (A:: * pmyvirfunc)(int tempvalue) = &A::myvirfunc;
A* pvaobj = new A;
pvaobj->myvirfunc(190);
(pvaobj->*pmyvirfunc)(190);
printf("%p\n", &A::myvirfunc);
pmyvirfunc = &A::myfunc2;
(pvaobj->*pmyvirfunc)(33);
delete pvaobj;
}
}
namespace _nmsp3
{
class A
{
public:
virtual void myvirfunc(int tempvalue)
{
cout << "A::myvirfunc()虚成员函数--tempvalue = " << tempvalue << endl;
}
virtual ~A()
{
}
};
class B :public A
{
public:
virtual void myvirfunc(int tempvalue)
{
cout << "B::myvirfunc()虚成员函数--tempvalue = " << tempvalue << endl;
}
virtual ~B() {}
};
void func()
{
B* pmyb = new B();
void (B:: * pmyvirfunc)(int tempvalue) = &A::myvirfunc;
(pmyb->*pmyvirfunc)(190);
printf("%p\n", &A::myvirfunc);
printf("%p\n", &B::myvirfunc);
}
}
int main()
{
_nmsp3::func();
return 1;
}