我是新來的C++編程,在做一些C++程序時我有一個疑問,那就是如何實現靜態成員函數的動態綁定。正常成員函數的動態綁定可以通過將成員函數聲明爲虛擬來實現,但我們不能將靜態成員函數聲明爲虛擬,所以請幫助我。並請參見下面的例子:靜態成員函數繼承
#include <iostream>
#include <windows.h>
using namespace std;
class ClassA
{
protected :
int width, height;
public:
void set(int x, int y)
{
width = x, height = y;
}
static void print()
{
cout << "base class static function" << endl;
}
virtual int area()
{
return 0;
}
};
class ClassB : public ClassA
{
public:
static void print()
{
cout << "derived class static function" << endl;
}
int area()
{
return (width * height);
}
};
int main()
{
ClassA *ptr = NULL;
ClassB obj;
ptr = &obj ;
ptr->set(10, 20);
cout << ptr->area() << endl;
ptr->print();
return 0;
}
在上面的代碼中,我已指定派生類對象的指針和調用靜態成員函數打印(),但它被調用基類功能,所以我怎樣才能實現動態綁定靜態成員函數。
不錯!我喜歡。 –