C++之多态
1 静态联编和动态联编
C++支持编译时多态(静态多态)和运行时多态(动态多态)。运算符重载和函数重载就是编译时多态,而派生类和虚函数就是运行时多态。
静态多态和动态多态的区别就是函数地址是早绑定的(静态联编)还是晚绑定的(动态联编)。
静态联编案例:
class Animal {
public:
void speak() {
cout << "动物在说话" << endl;
}
};
class Cat : public Animal {
public:
void speak() {
cout << "小猫在喵喵地叫..." << endl;
}
};
// 调用doSpeak的时候, 在编译阶段就找animal类型
// speak函数的地址 早就绑定好了 静态联编 编译阶段就确定好了地址
void doSpeak(Animal &animal) {
animal.speak(); //输出 动物在说话
}
void test01() {
Cat cat;
doSpeak(cat);
}
如果想调用猫的speak , 就不能提前绑定好函数的地址了,所以需要在运行时候,再去确定函数地址,这就叫动态联编。
标签:联编,void,多态,C++,静态,speak From: https://www.cnblogs.com/lofly/p/16629605.html