通过成员函数指针调用函数
使用成员函数指针时,确保其正确调用至关重要。考虑示例代码:
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中文网其他相关文章!