歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++類成員函數指針

C++類成員函數指針

日期:2017/3/1 10:15:11   编辑:Linux編程

使用類成員函數指針需要掌握的三點。
1) 申明類成員函數指針:::*
2) 通過對象指針調用類函數指針:->*
3) 通過對象調用類函數指針:.*

例:

  1. /** 定義基類和子類 **/
  2. class Base {
  3. public:
  4. virtual void print1() {
  5. std::cout << "Base::print1()" << std::endl;
  6. }
  7. virtual void print2() {
  8. std::cout << "Base::print2()" << std::endl;
  9. }
  10. };
  11. class Derived : public Base {
  12. public:
  13. virtual void print1() {
  14. std::cout << "Derived::print1()" << std::endl;
  15. }
  16. virtual void print2() {
  17. std::cout << "Derived::print2()" << std::endl;
  18. }
  19. };
  20. /** 申明類成員函數指針類型 **/
  21. typedef void (Base::*fn)();
  22. /** 通過對象指針調用類函數指針 **/
  23. void test1(Base* obj, fn func) {
  24. (obj->*func)();
  25. }
  26. /** 通過對象調用類函數指針 **/
  27. void test2(Base& obj, fn func) {
  28. (obj.*func)();
  29. }
  30. void test_function_pointer() {
  31. Base b;
  32. Derived d;
  33. test1(&b, &Base::print1);
  34. test1(&b, &Base::print2);
  35. test1(&d, &Base::print1);
  36. test1(&d, &Base::print2);
  37. test2(b, &Base::print2);
  38. test2(d, &Base::print2);
  39. }
Copyright © Linux教程網 All Rights Reserved