最近笔者学习了一下虚函数和类的多态性
类似这样:
#include <iostream>
using namespace std;
class A {
public: virtual void f() { ... } // 虚函数
};
class B: public A {
public: void f() { ... } // 虚函数重载
};
int main() {
A ma = B(), *pa = new B();
ma.f(); // 调用 A::f()
pa->f(); // 调用 B::f()
return 0;
}
看完这段代码后,想必大家都懂了什么是虚函数,什么是多态性
于是,闲得没事干的笔者,就写了这个代码:
#include <iostream>
using namespace std;
class Hello {
public:
virtual ~Hello() {}
virtual void f() {
cout << "Hello, ";
}
};
class World: public Hello {
public:
virtual ~World() {}
void f() {
cout << "World!" << endl;
}
};
int main() {
Hello h = World(), *w = new World();
h.f(); w->f(); // 输出: Hello, World!
return 0;
}