21xrx.com
2024-09-20 05:38:43 Friday
登录
文章检索 我的文章 写文章
C++类成员函数指针的使用方法
2023-07-01 14:19:19 深夜i     --     --
C++ 类成员函数 指针 使用方法 函数指针

C++的类成员函数指针是指向类中成员函数的指针,它和普通的函数指针有些不同。在类中定义的成员函数包括两种类型:静态成员函数和非静态成员函数。在使用指向类成员函数的指针时需要特别注意这两种类型。

1. 非静态成员函数指针

非静态成员函数指针是指向某个类的非静态成员函数的指针。使用时需要加上类名和作用域解析符,在前面加上&符号表示取地址。例如:


class MyClass {

public:

  void func();

};

MyClass myObj;

void (MyClass::*pFunc)() = &MyClass::func;

这里定义了一个指向MyClass 类中的非静态成员函数 func() 的指针 pFunc。注意,在定义成员函数指针时需要使用类的作用域解析符 :: 来指定类的命名空间。

调用该指针指向的函数需要使用一个对象和成员函数指针组成的指针。例如:


(myObj.*pFunc)();

这里使用了 myObj 作为对象,并使用* 运算符和成员函数指针 pFunc 组成指向成员函数的指针,调用了 func() 函数。

2. 静态成员函数指针

静态成员函数是可以直接通过类名调用的函数,因此在定义成员函数指针时不需要指定对象作为调用者,只需要使用类名和作用域解析符即可。例如:


class MyClass {

public:

  static void func();

};

void (*pFunc)() = &MyClass::func;

在这里定义了一个指向 MyClass 类中的静态成员函数 func() 的指针 pFunc。

调用该指针指向的函数时,直接使用指向成员函数的指针即可:


(*pFunc)();

这里通过使用* 运算符和指向成员函数的指针 pFunc,调用了 func() 函数。

总结:

C++ 的类成员函数指针使用较为复杂,需要区分非静态成员函数和静态成员函数,并且需要使用作用域解析符来指定命名空间。在实际开发中,需要注意这些细节问题,才能正确地使用类成员函数指针。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复