多态相关(虚函数,覆盖,纯虚函数,抽象类)
面向对象三大特性:封装,继承,多态
其中多态在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");
- }

浙公网安备 33010602011771号