首頁 >後端開發 >C++ >如何在C中使用指標正確呼叫成員函數?

如何在C中使用指標正確呼叫成員函數?

Linda Hamilton
Linda Hamilton原創
2024-12-24 04:32:13799瀏覽

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