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

面向对象三大特性:封装,继承,多态

其中多态在C++里是通过虚函数来实现的,主要实现的功能是继承里父类的指针调用子类的功能函数。

覆盖:覆盖虚函数才能实现多态。覆盖普通函数并不能实现多态…

重载:和多态没有半毛钱关系,本质上重载其实是不同的函数

纯虚函数:函数声明加=0。强制子类实现,不能实例化。

抽象类:包含纯虚函数的类,强制子类实现,不能实例化。

 

更为具体的,看下面这个例子:

 

[cpp]
  1. #include<iostream>  
  2. using namespace std;  
  3.   
  4.   
  5. class 族谱 {  
  6. public:  
  7.   
  8.     virtual void 说两句() = 0;//纯虚函数,有纯虚函数不能实例化  
  9.     void 属性() { cout << "I am ZUPU"<<endl; }  
  10. };  
  11. class 爸爸 :public 族谱 {  
  12. public:  
  13.   
  14.     virtual void 说两句() { cout << "我是爸爸" << endl; };  
  15.     void 属性() { cout << "I am BABA"; }  
  16. };  
  17. class 你 :public 爸爸 {  
  18. public:  
  19.   
  20.     virtual void 说两句() { cout << "我是孙砸" << endl; };  
  21.     void 属性() { cout << "I am SUNZEI"; }  
  22. };  
  23.   
  24. int main() {  
  25.     //族谱 族谱;//报错,因为抽象类不能实例化  
  26.     爸爸 爸爸;  
  27.     你 你;  
  28.     族谱 *p1 = &爸爸;  
  29.     族谱 *p2 = &你;  
  30.     cout << "====多态=====" << endl;  
  31.     p1->说两句();  
  32.     p2->说两句();  
  33.     cout << "====没virtual=====" << endl;  
  34.     p1->属性();  
  35.     p2->属性();  
  36.     system("pause");  
  37.   
  38. }  



 

posted @ 2017-08-25 15:47  fosonR  阅读(143)  评论(0)    收藏  举报