面向对象三大特性:封装,继承,多态
其中多态在C++里是通过虚函数来实现的,主要实现的功能是继承里父类的指针调用子类的功能函数。
覆盖:覆盖虚函数才能实现多态。覆盖普通函数并不能实现多态…
重载:和多态没有半毛钱关系,本质上重载其实是不同的函数
纯虚函数:函数声明加=0。强制子类实现,不能实例化。
抽象类:包含纯虚函数的类,强制子类实现,不能实例化。
更为具体的,看下面这个例子:
#include<iostream>
using namespace std;
class 族谱 {
public:
virtual void 说两句() = 0;//纯虚函数,有纯虚函数不能实例化
void 属性() { cout << "I am ZUPU"<<endl; }
};
class 爸爸 :public 族谱 {
public:
virtual void 说两句() { cout << "我是爸爸" << endl; };
void 属性() { cout << "I am BABA"; }
};
class 你 :public 爸爸 {
public:
virtual void 说两句() { cout << "我是孙砸" << endl; };
void 属性() { cout << "I am SUNZEI"; }
};
int main() {
//族谱 族谱;//报错,因为抽象类不能实例化
爸爸 爸爸;
你 你;
族谱 *p1 = &爸爸;
族谱 *p2 = &你;
cout << "====多态=====" << endl;
p1->说两句();
p2->说两句();
cout << "====没virtual=====" << endl;
p1->属性();
p2->属性();
system("pause");
}