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

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

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

2020-01-26 14:42:56
字體:
來源:轉載
供稿:網友

虛函數

#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){ title=t; }};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
久久久精品视频在线观看| 欧美在线视频一二三| 国产香蕉一区二区三区在线视频| 欧美视频免费在线| 国产情人节一区| 欧洲美女7788成人免费视频| 亚洲免费中文字幕| 欧美日韩国产第一页| 欧美性xxxx极品hd欧美风情| 久久天天躁狠狠躁夜夜av| 亚洲欧美色图片| 国产精品99导航| 久久精品国产视频| 国产精品色悠悠| 久久久精品国产亚洲| 成人444kkkk在线观看| 欧美精品在线第一页| 欧美激情视频三区| 久久99国产精品久久久久久久久| 亚洲欧美国产高清va在线播| 国产美女精品视频免费观看| 国产日本欧美一区二区三区在线| 欧美华人在线视频| 国产成人精品一区| 欧美激情视频一区二区| 欧美在线精品免播放器视频| 欧美日产国产成人免费图片| 美女久久久久久久| 欧美一级大片在线观看| 九九热精品视频在线播放| 91麻豆国产语对白在线观看| 97视频免费看| 亚洲国产一区二区三区在线观看| 日韩激情在线视频| 久色乳综合思思在线视频| 成人动漫网站在线观看| 伊人一区二区三区久久精品| 欧美一区二区.| 国产成人a亚洲精品| 日韩国产中文字幕| 久久久精品久久| 亚洲欧美中文日韩在线v日本| 555www成人网| 成人精品视频在线| 欧美第一黄色网| …久久精品99久久香蕉国产| 国产一区二区三区在线观看网站| 日韩免费不卡av| 欧美老肥婆性猛交视频| 久久久久久12| 91九色综合久久| 日韩人在线观看| 91精品久久久久久久久久久久久久| 亚洲午夜av电影| 国模私拍一区二区三区| 久久影视电视剧免费网站| 亚洲缚视频在线观看| 精品国偷自产在线视频99| 97视频国产在线| 亚洲精品www| 国产91露脸中文字幕在线| 精品视频偷偷看在线观看| 国产美女直播视频一区| 国产精品91久久| 日韩在线一区二区三区免费视频| 神马久久桃色视频| 国产高清在线不卡| 国产精品久久久久久久久久久新郎| 日韩中文字幕国产精品| 91超碰中文字幕久久精品| 亚洲最大av网| 久久久亚洲影院你懂的| 欧美亚洲另类制服自拍| 一本色道久久综合亚洲精品小说| 亲爱的老师9免费观看全集电视剧| 精品国产视频在线| 亚洲精品成人久久电影| 中文字幕国内精品| 久久久久国产精品www| 国产精品美女久久久免费| 色偷偷91综合久久噜噜| 成人做爰www免费看视频网站| 久久国产精品久久久久| 亚洲国产欧美一区二区三区久久| 51色欧美片视频在线观看| 亚洲国产毛片完整版| 91经典在线视频| 中文字幕日本精品| 亚洲性夜色噜噜噜7777| 日韩高清不卡av| 亚洲欧美日韩国产精品| 国产裸体写真av一区二区| 日韩女优人人人人射在线视频| 亚洲欧美福利视频| 国产精品视频在线观看| 亚洲三级黄色在线观看| 亚洲成人性视频| 国产剧情日韩欧美| 国产xxx69麻豆国语对白| 日韩中文字幕在线免费观看| 国产精品视频一区二区三区四| 大胆人体色综合| 国产成人久久久精品一区| 亚洲精品少妇网址| 欧美日韩成人在线观看| 日韩亚洲欧美成人| 久久69精品久久久久久久电影好| 日韩经典中文字幕| 亚洲国产精品久久| 欧美激情久久久久久| 久久久久一本一区二区青青蜜月| 亚洲男人第一av网站| 久久人人爽国产| 69av成年福利视频| 亚洲视频自拍偷拍| 91精品国产色综合久久不卡98| 17婷婷久久www| 国产精品视频久久久久| 亚洲自拍偷拍网址| 97**国产露脸精品国产| 久久久久久国产精品三级玉女聊斋| 欧美与黑人午夜性猛交久久久| 精品日韩视频在线观看| 91精品视频在线免费观看| 欧美日韩国产在线播放| 欧美日韩在线免费| 国产在线拍揄自揄视频不卡99| 亚洲日本成人网| 国产精品美女在线观看| 欧美高清一级大片| 欧美男插女视频| 久久男人资源视频| 国产精品狠色婷| 91久久国产精品91久久性色| 国产精品扒开腿做爽爽爽的视频| 欧美一区二三区| 清纯唯美亚洲综合| 国产成人亚洲综合91| 国产日韩换脸av一区在线观看| 91av在线免费观看视频| 国产精品亚洲欧美导航| 亚洲一区二区三区777| 疯狂做受xxxx欧美肥白少妇| 国产成人一区二区三区电影| 91高清视频免费观看| 欧美色欧美亚洲高清在线视频| 成人www视频在线观看| 久久久久久久久久久免费| 久久久最新网址| 亚洲最大av网站| 91精品国产91久久久久福利| 色综合久久久久久中文网| 97人人模人人爽人人喊中文字| 欧美一级片一区| 国产精品久久久久久一区二区| 亚洲淫片在线视频| 国产精品久久久av久久久| 日韩在线视频线视频免费网站| 久久亚洲精品小早川怜子66| 欧美精品福利在线| 成人激情视频网| 亚洲成人aaa| 欧美高清第一页| 九九热这里只有精品6|