- 想想虚这个字怎么理解,想象你是个爸爸,你现在要给儿子买奶粉,但是你不知道给哪个儿子买,你虚不虚?在代码层面就是它不知道自己可能会指向哪块空间,它指的是父类创建的指针或者引用
- 虚函数存在的目的是为了实现动态多态的,关键字virtual
- 核心的想法是父类可以访问到子类的函数(因此是创建父类的指针或者引用指向子类的对象)
- 纯虚函数是为了实现一个接口,想要继承父类,就必须要实现这个函数,纯虚函数在父类中不写具体实现
virtual void test() = 0
- 含有纯虚函数的类成为抽象类,该类不能生成对象
#include <iostream>
using namespace std;
class Parent
{
private:
public:
float milk_pieces;
virtual void buy_milk()
{
cout << "im father, i have " << milk_pieces << "RMB" << endl;
}
Parent(float mp):milk_pieces(mp){}
Parent(){}
virtual ~Parent(){}
};
class Child1 : public Parent
{
private:
int m_p;
public:
virtual void buy_milk()
{
cout << " im child 1 , i need " << m_p << "RMB \t to buy milk" << endl;
}
Child1(int mp): m_p(mp){ }
virtual ~Child1(){}
};
int main()
{
Parent *p = new Parent(199.2);
p->buy_milk();
Parent *p1 = new Child1(200);
p1->buy_milk();
return 0;
}