您的位置:首页 > 其它

多态相关(虚函数,覆盖,纯虚函数,抽象类)

2017-08-09 13:35 218 查看
面向对象三大特性:封装,继承,多态

其中多态在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");

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  虚函数 抽象类 多态
相关文章推荐