首页 >后端开发 >C++ >如何在C中使用指针正确调用成员函数?

如何在C中使用指针正确调用成员函数?

Linda Hamilton
Linda Hamilton原创
2024-12-24 04:32:13800浏览

How to Correctly Call a Member Function Using a Pointer in C  ?

通过成员函数指针调用

在 C 中,成员函数指针允许我们通过指针像常规函数一样对待成员函数。但是,必须遵循某些语法规则以避免编译错误。

考虑以下代码,我们尝试使用成员函数指针调用 cat 类的 walk 成员函数:

class cat {
public:
   void walk() {
      printf("cat is walking \n");
   }
};

int main(){
   cat bigCat;
   void (cat::*pcat)();
   pcat = &cat::walk;
   bigCat.*pcat();
}

上面的代码无法编译,并出现错误“bigCat.*pcat(); 语句无法编译。”发生这种情况是因为语法存在优先级问题。

成员函数指针使用“.”运算符,而函数调用使用普通括号。函数调用的优先级高于“”。

要解决此问题,需要额外的括号来覆盖优先级规则:

(bigCat.*pcat)();

通过此更正,代码现在将通过成员函数指针正确调用 walk 函数.

以上是如何在C中使用指针正确调用成员函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn