[cpp] 1. #include iostream 2. 3. using namespace std; 4. 5. class CSimple 6. { 7. public: 8. //静态成员变量 9. static const int sx = 0; 10. //静态函数 11. static void SF1() 12. { 13. } 14. public: 15. //成员变量 16. int x; 17.
[cpp]
1. #include <iostream>
2.
3. using namespace std;
4.
5. class CSimple
6. {
7. public:
8. //静态成员变量
9. static const int sx = 0;
10. //静态函数
11. static void SF1()
12. {
13. }
14. public:
15. //成员变量
16. int x;
17. public:
18. //成员函数
19. void F1()
20. {
21. cout<<"I'm from CSimple::F1()"<<endl;
22. }
23. void F2()
24. {
25. cout<<"I'm from CSimple::F1()"<<endl;
26. }
27. public:
28. //构造函数,C++语法不允许获取构造函数和析构函数地址,要分析其地址,只能查看生产的汇编代码了。
29. CSimple()
30. {
31. }
32. //析构函数
33. ~CSimple()
34. {
35. }
36. };
37.
38. typedef void (CSimple::*Func)();
39.
40. union
41. {
42. Func f;
43. void *addr;
44. }ut;
45.
46. int main(int argc, char** argv)
47. {
48. cout<<"main()函数的地址是 :"<<std::hex<<std::showbase<<main<<endl;
49.
50. ut.f = &CSimple::F1;
51. cout<<"成员函数F1()的地址是 :"<<std::hex<<std::showbase<<ut.addr<<endl;
52. ut.f = &CSimple::F2;
53. cout<<"成员函数F2()的地址是 :"<<std::hex<<std::showbase<<ut.addr<<endl;
54.
55. cout<<"静态成员函数SF1()的地址是:"<<std::hex<<std::showbase<<CSimple::SF1<<endl;
56. cout<<"静态成员变量sx的地址是 :"<<std::hex<<std::showbase<<&CSimple::sx<<endl;
57.
58. cout<<"CSimple类型实例的大小 :"<<sizeof(CSimple)<<endl;
59. CSimple* pObj = new CSimple();
60. cout<<"对象指针变量的地址是 :"<<std::hex<<std::showbase<<&pObj<<endl;
61. cout<<"新建对象的地址是 :"<<std::hex<<std::showbase<<pObj<<endl;
62. cout<<"成员变量的地址是 :"<<std::hex<<std::showbase<<&pObj->x<<endl;
63. //CSimple *p = new CSimple();
64. //(p->*f)();
65. delete pObj;
66. cin>>argc;
67. return 0;
68. }
运行结果: