多态指的是函数在运行过程中(而不是编译过程中)动态被绑定,C++用virtual虚函数实现多态。下面举个简单的例子:
#include <iostream>
using namespace std;
class A {
public:
A() {a = 1;}
void print() {cout << "A" << endl;}
protected:
int a;
};
class B:public A {
public:
void print() {cout << "B" << endl;}
};
int main() {
A *a;
B b;
a = &b;
a->print();
return 0;
}
输出结果为:A,a->print()并没有被绑定到类B上,这不是多态
下一个例子:
#include <iostream>
using namespace std;
class A {
public:
A() {a = 1;}
virtual void print() {cout << "A" << endl;}
protected:
int a;
};
class B:public A {
public:
virtual void print() {cout << "B" << endl;}
};
int main() {
A *a;
B b;
a = &b;
a->print();
return 0;
}
输出结果为B,可以看到,通过虚函数,实现了动态绑定