[C++] 类中的虚函数
介绍
本文介绍了c++中,虚函数的原理。
正文
首先看代码1:
#include <iostream>
using namespace std;
class Animal{
public:
// 虚函数
void speak(){
cout << "animal speaking " <<endl;
}
};
class Cat: public Animal{
public:
void speak(){
cout << "cat speaking " <<endl;
}
};
void do_speak(Animal *animal){
animal->speak();
}
int main(){
Animal a;
cout << sizeof(a)<< endl;
return 0;
}
打印的结果:1
如果我们把speak函数修改成,virtual void speak之后,打印的结果:4
它变成了指针。
原理:
修改成代码2:
#include <iostream>
using namespace std;
class Animal{
public:
// 虚函数
virtual void speak(){
cout << "animal speaking " <<endl;
}
};
class Cat: public Animal{
public:
virtual void speak(){
cout << "CAT speaking " <<endl;
}
};
void do_speak(Animal *animal){
animal->speak();
}
int main(){
Cat cat;
do_speak(&cat);
return 0;
成功。