c++中子类重写父类虚函数
本篇文章来讨论一下什么是子类重写父类函数的底层概念。写的不好的地方,敬请多多指正~
一、函数地址绑定
1、早绑定
先来看一段代码:
class Animal//创建动物类(父类)
{
public:
void Speak()
{
cout << "动物在说话" << endl;
}
};
class Cat :public Animal//创建子类(猫),并继承父类
{
public:
void Speak()
{
cout << "小猫在说话" << endl;
}
};
//C++中允许父类和子类之间的类型转换,并且不需要进行强制类型转换,所以父类的引用或指针可以直接指向子类
void doSpeak(Animal& a)//将c传进来后,相当于Animal& animal = c
{
a.Speak();
}
void test()
{
Cat c;//创建子类对象