c++ 多态
多态表现为一个函数在不同情况下可以变现出不同的形式。
如:
class Person {
public void f() { print(i am person);}
}
class Male : Person {
public void f() { print(i am male);}
}
class Female : Person {
public void f() { print(i am female);}
}
male.f(); //结果就是 "i am male"
female.f(); //结果就是"i am female"
同一个函数在不同的类中显示出了不同的情况,这就是多态,具体来说是静态多态。这里的函数f是被override(重写)了。
对于多态还有动态多态,这种多态是知道程序被运行时才知道这个类调用的是什么函数。
class Person {// 抽象类
public virtual void f() = 0; //纯虚函数
}
class Male : Person {
public void f() { print(i am male);}
}
class Female : Person {
public void f() { print(i am female);}
}
Male * male = new Male;
Person * person = male;
person.f()
输出结果为i am male,此时对于c++来说Person必须为抽象类。这就体现了动态多态。