Jestem nowym programistą C++, mam pewne wątpliwości podczas wykonywania niektórych programów w C++, w ten sposób uzyskuje się dynamiczne wiązanie dla funkcji statycznego elementu. Dynamiczne wiązanie normalnych funkcji składowych można uzyskać deklarując funkcje członkowskie jako wirtualne, ale nie możemy zadeklarować funkcji statycznych jako wirtualnych, więc proszę o pomoc. i proszę zobaczyć poniżej:Dziedziczenie funkcji statycznych członków
#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;
}
W powyższym kodzie mam przypisanego pochodnego obiekt klasy do wskaźnika i wzywającą wydruk funkcja składowa statyczna(), ale jest to wywołanie funkcji klasy bazowej więc jaki sposób można osiągnąć dynamiczny bind dla statycznej funkcji składowej.
ładne! lubię to. –