在C++中,成員函數指針可以用于實現多態性。多態性是面向對象編程的一個重要特性,允許不同的類對象對同一個消息做出不同的響應。使用成員函數指針可以在運行時動態地選擇要調用的函數,從而實現多態性。
下面是一個簡單的例子,演示了如何使用成員函數指針實現多態性:
#include <iostream>
class Base {
public:
virtual void print() {
std::cout << "Base class" << std::endl;
}
};
class Derived : public Base {
public:
void print() {
std::cout << "Derived class" << std::endl;
}
};
int main() {
Base baseObj;
Derived derivedObj;
void (Base::*ptr)() = &Base::print; // 定義一個指向Base類的成員函數的指針
(baseObj.*ptr)(); // 調用Base類的print函數
(derivedObj.*ptr)(); // 調用Derived類的print函數
return 0;
}
在上面的例子中,我們定義了一個基類Base和一個派生類Derived。Base類中有一個虛擬函數print,Derived類重寫了這個函數。然后我們在主函數中定義了一個指向Base類的成員函數print的指針ptr,通過該指針可以在運行時動態地選擇要調用的函數。
通過上面的例子,可以看到成員函數指針在多態性中的應用。它可以讓我們在運行時根據對象的實際類型調用不同的函數,實現了多態性的特性。