#include <iostream>
using namespace std;
using namespace std;
void print()
{
cout << "Hello" << endl;
}
class TT
{
public:
int i;
void print()
{
cout << "hello" << endl;
i = 5;
}
void dod()
{
f2 = &TT::print;
(this->*f2)();
}
static void dd()
{
cout << "Hello dd" << endl;
}
static void ddd()
{
f3 = ⅆ
(*f3)();
}
void (*f1)(); //普通指针
void (TT::*f2)();
static void (*f3)();
};
void (*TT::f3)()= NULL;
void (TT::*f4)();
int main()
{
TT t;
cout<<"测试类外的class函数指针指向类内的函数"<<endl;
f4 = &TT::print;
(t.*f4)();
cout<<"测试类外的class函数指针指向类内的函数--end"<<endl;
cout<<"测试类内的class函数指针指向类内的函数"<<endl;
t.dod();
cout<<"测试类内的class函数指针指向类内的函数--end"<<endl;
// (t.*fn)();
// (t.*(TT::fn)();
cout<<"测试类内的clss函数指针指向类内的函数,在类外的用法"<<endl;
t.f2 = &TT::print;
(t.*t.TT::f2)();
(t.*t.f2)();
cout<<"测试类内的函数指针指向类内的函数,在类外的用法--end"<<endl;
cout<<"测试类内的static函数指针指向类内的static函数"<<endl;
TT::ddd();
TT::f3 = &TT::dd;
TT::f3();
cout<<"测试类内的static函数指针指向类内的static函数--end"<<endl;
cout<<"测试类外函数指针指向类内的static函数"<<endl;
void (*f4)() = TT::dd;
f4();
cout<<"测试类外函数指针指向类内的static函数--end"<<endl;
cout << sizeof(TT) << endl;
int *ptr = &t.i;
cout << *ptr << endl;
cout<<"成员函数"<<endl;
int (TT::*pptr) = &TT::i;
cout << t.*pptr << endl;
cout<<"成员函数--end"<<endl;
cout<<"测试类内的普通指针指向类外的函数"<<endl;
t.f1 = print;
t.f1();
cout<<"测试类内的普通指针指向类外的函数--end"<<endl;
cout<<"测试类内的普通指针指向类内的函数"<<endl;
//t.f1 = &TT::print;
//t.f1();
cout<<"这样是不可以的"<<endl;
cout<<"测试类内的普通指针指向类内的函数--end"<<endl;
return 1;
}