首页 >后端开发 >C++ >为什么通过指针调用成员函数时 `bigCat.*pcat()` 不起作用?

为什么通过指针调用成员函数时 `bigCat.*pcat()` 不起作用?

Linda Hamilton
Linda Hamilton原创
2024-12-15 16:42:15675浏览

Why Doesn't `bigCat.*pcat()` Work When Calling Member Functions Through Pointers?

通过成员函数指针调用函数

使用成员函数指针时,确保其正确调用至关重要。考虑示例代码:

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)();

这可确保函数调用运算符 (()) 的优先级高于指向成员绑定运算符 (.*) 的优先级。一元运算符通常优先于二元运算符。因此,需要使用括号来显式指定在对象 bigCat 上调用成员函数 walk()。

使用正确的语法,代码将成功执行并向控制台。

以上是为什么通过指针调用成员函数时 `bigCat.*pcat()` 不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!

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