C++基础继承和多态(水上飞机)
生活随笔
收集整理的這篇文章主要介紹了
C++基础继承和多态(水上飞机)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.繼承和多態基礎知識
菱形繼承需要用vitual關鍵字防止內存的重復使用,多態主要有靜態多態和動態多態。
靜態多態主要是在調用過程中函數的重載,在編譯階段前就確定函數地址。
動態多態實在運行階段才確定函數的地址。動態多態主要實在父類的指針指向子類開辟的堆區指針的時候使用,可以使得以此方式調用子類的時候不至于出現混淆調用的情況。
純虛函數的使用,在編程時能夠使得代碼更加清晰,且可讀性強。對于析構的多態使用,能使得子類析構函數的內存得到釋放,需要加上virtual關鍵字修飾。在水上飛機例題中調用virtural可以了解到子類和父類調用的順序,在函數重載中使得代碼結構清晰。
下面是c++繼承和多態的經典示例水上飛機問題:
class CRAFT { protected:double speed; public:CRAFT(double m_speed)//注意這個地方有一個引用{speed=m_speed;cout<<"創建航行器(速度: "<<speed<<")"<<endl;}virtual void Show(){cout<<"航行(速度: "<<speed<<")"<<endl;}virtual ~CRAFT(){cout<<"銷毀航行器(速度: "<<speed<<")"<<endl;}}; class PLANE:virtual public CRAFT { protected:double width; public:PLANE(double m_speed,double m_width):CRAFT(m_speed),width(m_width){cout<<"創建飛機(翼展: "<<width<<")"<<endl;}virtual void Show(){cout<<"航行(速度: "<<speed<<","<<" 翼展: "<<width<<")"<<endl;}virtual ~PLANE(){cout<<"銷毀飛機(翼展: "<<width<<")"<<endl;}}; class SHIP:virtual public CRAFT { protected:double depth; public:SHIP(double m_speed,double m_depth):CRAFT(m_speed),depth(m_depth){cout<<"創建船(吃水: "<<depth<<")"<<endl;}virtual void Show(){cout<<"航行(速度: "<<speed<<", 吃水: "<<depth<<")"<<endl;}virtual ~SHIP(){cout<<"銷毀船(吃水: "<<depth<<")"<<endl;} }; class SEAPLANE:public PLANE,public SHIP {public:SEAPLANE(double m_speed,double m_width,double m_depth):CRAFT(m_speed),PLANE(m_speed,m_width),SHIP(m_speed,m_depth){cout<<"創建水上飛機"<<endl;}virtual void Show(){cout<<"航行(速度: "<<speed<<", 翼展: "<<width<<", 吃水: "<<depth<<")"<<endl;}virtual ~SEAPLANE(){cout<<"銷毀水上飛機"<<endl;} };總結
以上是生活随笔為你收集整理的C++基础继承和多态(水上飞机)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: infercnv报错Error in b
- 下一篇: m8+android固件,M8完美And