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

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

Linda Hamilton
发布: 2024-12-15 16:42:15
原创
673 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板