Я новичок в программировании на 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;
}
В приведенной выше коде я назначил Производный объект класса к указателю и вызвать функцию печать статического члена(), но он звонит базовый класс функцию, так как я могу достичь динамического bind для статической функции-члена.
приятно! мне это нравится. –