亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

實例講解C++編程中的虛函數與虛基類

2020-05-23 14:08:43
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++編程中的虛函數與虛基類的實例講解,虛函數與虛基類的使用是C++入門學習中的基礎知識,需要的朋友可以參考下
 

虛函數

#include "stdafx.h"#include <iostream>using namespace std;class B0//基類B0聲明{public: void display(){cout<<"B0::display()"<<endl;}//公有成員函數};class B1: public B0//公有派生類B1聲明{public: void display(){cout<<"B1::display()"<<endl;}//公有成員函數};class D1: public B1//公有派生類D1聲明{public: void display(){cout<<"D1::display()"<<endl;}//公有成員函數};void fun(B0 *ptr)//普通函數{//參數為指向基類對象的指針 ptr->display();//"對象指針->成員名"}void main()//主函數{ B0 b0;//聲明基類B0類對象 B1 b1;//聲明B1類對象 D1 d1;//聲明D1類對象 B0 *p;//聲明B0類指針 p=&b0;//B0類指針指向B0類對象, fun(p); p=&b1;//B0類指針指向B1類對象,指向基類的指針也可以指向派生類。 fun(p); p=&d1;//B0類指針指向D1類對象,指向基類的指針也可以指向派生類。 fun(p);}

輸出結果:

B0::display()B0::display()B0::display()Press any key to continue

類型兼容規則舉例

#include "stdafx.h"#include <iostream>using namespace std;class B0//基類B0聲明{public: virtual void display(){cout<<"B0::display()"<<endl;}//公有成員函數};class B1: public B0//公有派生類B1聲明{public: void display(){cout<<"B1::display()"<<endl;}//公有成員函數};class D1: public B1//公有派生類D1聲明{public: void display(){cout<<"D1::display()"<<endl;}//公有成員函數};void fun(B0 *ptr)//普通函數{//參數為指向基類對象的指針 ptr->display();//"對象指針->成員名"}void main()//主函數{ B0 b0;//聲明基類B0類對象 B1 b1;//聲明B1類對象 D1 d1;//聲明D1類對象 B0 *p;//聲明B0類指針 p=&b0;//B0類指針指向B0類對象, fun(p); p=&b1;//B0類指針指向B1類對象,指向基類的指針也可以指向派生類。 fun(p); p=&d1;//B0類指針指向D1類對象,指向基類的指針也可以指向派生類。 fun(p);}

輸出結果:

B0::display()B1::display()D1::display()Press any key to continue 

虛函數是為了實現某種功能而假設的函數,虛函數只能是類中的一個成員函數,不能是靜態成員,使用關鍵字virtual用于在類中說明該函數是虛函數。 虛函數更是為了實現面向對象的多態性而產生的,使用虛函數和多態

性能夠簡化代碼長度,支持更簡單的順序,便于程序的調試,維護。
虛函數的定義方法:

class A{  public:    virtual void fun();  //define virtual function};void A::fun() { ... }      //member function describe

上面定義了一個虛函數,然后在類體外進行了函數的具體描述。

在類的繼承當中,當基類中聲明了某個虛函數,即使在派生類中沒有聲明虛函數,那么在以后的繼承結構中都是

虛函數,當然如果有多重繼承,在每個派生類中還是推薦對每個虛函數進行顯式的聲明。

為了說明虛函數在派生類中的應用,我寫段代碼作例子:

#include "stdio"class cbase{public: virtual void vfoo() { printf("vfoo from cbase/n"); }; void foo() { printf("foo from cbase/n"); }};class cderivd : public cbase{public: virtual void vfoo() { printf("vfoo from cderivd/n"); }; void foo() { printf("foo from cderivd/n"); };};int main(int argc, char* argv[]){ cbase* pbase = new cderivd(); pbase->foo(); //非虛函數,根據指針類型決定調用哪個foo,本例指針類型為cbase,所以調用的是cbase::foo() pbase->vfoo(); //虛函數,調用的是派生類的vfoo delete pbase; cderivd* pd = new cderivd(); pd->foo();    //非虛函數,本例指針類型為cderivd*,所以調用cderivd::foo(); pd->vfoo(); delete pd; cderivd d; d.foo(); d.vfoo(); ((cbase)d).foo(); //將d強行切割為cbase,這時調用的無論是foo還是vfoo都將是base的 ((cbase)d).vfoo(); getchar(); return 0;}

程序在DevCPP下編譯通過,輸出:

foo from cbasevfoo from cderivdfoo from cderivdvfoo from cderivdfoo from cderivdvfoo from cderivdfoo from cbasevfoo from cbase

虛基類 

#include "stdafx.h"#include<iostream>#include<string>using namespace std;class person{//聲明基類 protected: int age; char sex; string name;public: person(int a,char s,string nam){ age=a; sex=s; name=nam; }};class teacher:virtual public person{protected: string title;public: teacher(int a,char s,string nam,string t):person(a,s,nam){ }};class student:virtual public person{protected: float score;public: student(int a,char s,string nam,float sc):person(a,s,nam){ score=sc; }};class graduate:public teacher,public student{protected: float wdge;public: graduate(int a,char s,string nam,string t,float sc,float wd):person(a,s,nam),teacher(a,s,nam,t),student(a,s,nam,sc){ wdge=wd; } void show(){ cout<<name<<endl; cout<<age<<endl; cout<<sex<<endl; cout<<title<<endl; cout<<score<<endl; cout<<wdge<<endl; }};int main(){ graduate gr(22,'f',"k;asdjf;daf","klsdaf",89.5,79.5); gr.show(); return 0;}

輸出結果:

k;asdjf;daf22fklsdaf89.579.5Press any key to continue 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品模特av私拍在线观看| 亚洲国产高清福利视频| 91九色国产社区在线观看| 久久精品亚洲精品| 欧美高清不卡在线| 中文字幕国产亚洲2019| 久久久久久久国产| 久热爱精品视频线路一| 亚洲品质视频自拍网| 超碰97人人做人人爱少妇| 亚洲乱码av中文一区二区| 亚洲色图第三页| 精品福利一区二区| 欧美日韩一区二区免费在线观看| 国产精品高潮呻吟久久av无限| 亚州av一区二区| 国产主播在线一区| 国产精品自拍小视频| 亚洲性av在线| 色妞欧美日韩在线| 91精品国产色综合久久不卡98| 97热精品视频官网| 久久影视电视剧免费网站| 午夜精品久久久久久久久久久久久| 亚洲电影在线观看| 精品中文视频在线| 九九热最新视频//这里只有精品| 91精品久久久久久久久中文字幕| 国产成人97精品免费看片| 久久电影一区二区| 国产一区二区在线免费| 77777少妇光屁股久久一区| 81精品国产乱码久久久久久| 日韩免费高清在线观看| 久久人人爽人人爽爽久久| 欧美超级乱淫片喷水| 91精品国产综合久久男男| 亚洲美女精品成人在线视频| 日韩av在线高清| 国产精品爱久久久久久久| 亚洲综合色激情五月| 久久久国产在线视频| 成人在线观看视频网站| 亚洲无av在线中文字幕| 亚洲美女激情视频| 精品无人国产偷自产在线| 亚洲黄色在线看| 欧美日韩aaaa| 国产成人拍精品视频午夜网站| 国产精品丝袜视频| 国产亚洲精品久久久| 亚洲欧美在线免费观看| 成人激情视频网| 国产精品久久久久秋霞鲁丝| 日韩中文理论片| 午夜精品久久久久久久男人的天堂| 欧美精品videos另类日本| 日韩va亚洲va欧洲va国产| 国产亚洲精品一区二区| 亚洲午夜精品久久久久久性色| 日韩av成人在线观看| 亚洲欧美激情在线视频| 2019最新中文字幕| 国产精品午夜国产小视频| 日韩精品在线视频观看| 国产精品女视频| 亚洲精品一区二区网址| 国内精品伊人久久| 亚洲男人av在线| 一区二区三区回区在观看免费视频| 日韩av高清不卡| 91精品国产91久久久久久吃药| 中文字幕国内精品| 午夜精品久久久久久久99黑人| 最近中文字幕日韩精品| 欧美性xxxx极品高清hd直播| 亚洲综合中文字幕在线观看| 国产精品久久久久久久午夜| 国产剧情久久久久久| 国产成人精品免高潮在线观看| 岛国av一区二区在线在线观看| 在线观看91久久久久久| 亚洲成年人影院在线| 在线精品91av| 日本最新高清不卡中文字幕| 欧美激情极品视频| 在线观看国产精品淫| 亚洲第一av在线| 日韩视频永久免费观看| 日韩大片在线观看视频| 亚洲香蕉伊综合在人在线视看| 国产成+人+综合+亚洲欧美丁香花| 欧美精品激情在线观看| 91产国在线观看动作片喷水| 在线日韩欧美视频| 日韩小视频在线观看| 欧美精品18videos性欧美| 亚洲精品98久久久久久中文字幕| 69**夜色精品国产69乱| 亚洲成人动漫在线播放| 欧美午夜精品久久久久久久| 亚洲淫片在线视频| 91精品国产乱码久久久久久久久| 亚洲精品在线不卡| 日韩精品高清视频| 日韩欧美在线视频免费观看| 精品国产欧美成人夜夜嗨| 91高清视频免费| 国产香蕉97碰碰久久人人| 欧美午夜无遮挡| 亚洲午夜性刺激影院| 久久久国产精品亚洲一区| 午夜精品蜜臀一区二区三区免费| 久久亚洲精品视频| 欧美裸体xxxxx| 国产欧美一区二区三区在线看| 久久久人成影片一区二区三区| 欧美日韩中文字幕| 26uuu亚洲国产精品| 日韩av手机在线看| 亚洲www永久成人夜色| 欧美日韩在线观看视频| 91av免费观看91av精品在线| 日韩免费高清在线观看| 88国产精品欧美一区二区三区| 精品福利一区二区| 国产精品一香蕉国产线看观看| 欧美日韩日本国产| 欧美激情免费视频| 国产精品狠色婷| 国产精品视频区| 久久精品国产一区二区电影| 国产91九色视频| 国产成人精品一区二区| 午夜欧美不卡精品aaaaa| 久久久久久免费精品| 亚洲一品av免费观看| 亚洲www在线| 色综合天天狠天天透天天伊人| 一区二区三区回区在观看免费视频| 亚洲精品久久久久| 亚洲一区av在线播放| 中文欧美日本在线资源| 国产精品麻豆va在线播放| 欧美日韩福利电影| 人人做人人澡人人爽欧美| 亚洲精品之草原avav久久| 在线播放国产一区中文字幕剧情欧美| 日韩av电影手机在线| 久久视频国产精品免费视频在线| 国产精品第1页| 亚洲人成在线观看网站高清| 亚洲国产精品专区久久| 精品福利在线看| 97视频人免费观看| 亚洲一区二区三区视频播放| 亚洲美女福利视频网站| 亚洲视频在线免费观看| 91精品国产免费久久久久久| 成人性生交xxxxx网站| 亚洲色图欧美制服丝袜另类第一页| 欧美成人自拍视频| 日韩成人av网址| 欧美电影电视剧在线观看|