freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[經(jīng)濟(jì)學(xué)]第5章繼承與派生類-資料下載頁(yè)

2024-12-08 01:51本頁(yè)面
  

【正文】 ( )。 Derived d2(33)。 Base amp。b2=d2。 //用派生類對(duì)象來(lái)初始化基類的引用 ( )。 目錄 退出 第 116頁(yè) 共 141頁(yè) 例 賦值兼容規(guī)則實(shí)例 Derived d3(44)。 Base *b3=amp。d3。 //把派生類對(duì)象的地址賦值給指向基類的指針 b3show( )。 Derived *d4=new Derived(55)。 Base *b4=d4。 //把指向派生類對(duì)象的指針賦值給 //指向基類對(duì)象的指針 b4show( )。 delete d4。 } 目錄 退出 第 117頁(yè) 共 141頁(yè) 說(shuō) 明 ( 1)聲明為指向基類對(duì)象的指針可以指向它的公有派生的對(duì)象,但不允許指向它的私有派生的對(duì)象。例如: class base{.......}。 class derive:private base {.........}。 void main( ) { base op1,*ptr。 //定義基類 base的對(duì)象 op1及指針 ptr derive op2。 //定義派生類 derive的對(duì)象 op2 ptr=amp。op1。 //將指針 ptr指向?qū)ο?op1 ptr=amp。op2。 //錯(cuò)誤,不允許將 base類指針 ptr指向它的私有派生類對(duì)象 op2 } 目錄 退出 第 118頁(yè) 共 141頁(yè) 說(shuō) 明 ( 2)允許將一個(gè)聲明為指向基類的指針指向其公有派生類的對(duì)象,但是不能將一個(gè)聲明為指向派生類對(duì)象的指針指向其基類的一個(gè)對(duì)象。 如下例 目錄 退出 第 119頁(yè) 共 141頁(yè) 說(shuō) 明 class Base{........}。 class Derived:public Base{....}。 void main( ) { Base obj1。 //定義基類對(duì)象 obj1 Derived obj2,*ptr。 //定義派生類對(duì)象 obj2及指向派生類指針 ptr ptr=amp。obj2。 //將指針 ptr 指向派生類對(duì)象 obj2 ptr=amp。obj1。 //錯(cuò)誤,試圖將派生類指針指向基類對(duì)象 } 目錄 退出 第 120頁(yè) 共 141頁(yè) 說(shuō) 明 ( 3)聲明為指向基類對(duì)象的指針,當(dāng)其指向公有派生類對(duì)象時(shí),只能用它來(lái)直接訪問(wèn)派生類中從基類繼承來(lái)的成員,而不能直接訪問(wèn)公有派生類中定義的成員。 如下例 目錄 退出 第 121頁(yè) 共 141頁(yè) 說(shuō) 明 class A{ //... public: void print1( )。 }。 class B:public A{ //..... public: print2( )。 }。 void main( ) { A op1, *ptr。//定義基類 A的對(duì)象 op1和基類指針 ptr 目錄 退出 第 122頁(yè) 共 141頁(yè) 說(shuō) 明 B op2。 //定義派生類 B的對(duì)象 op2 ptr=amp。op1。 //將指針 ptr指向基類對(duì)象 op1 ptrprint1( )。 //調(diào)用基類函數(shù) print1( )。 ptr=amp。op2。//將指針 ptr指向派生類對(duì)象 op2 ptrprint1( )。//調(diào)用對(duì)象 op2從基類繼承來(lái)的成員函數(shù) ptrprint2( )。//錯(cuò)誤,基類指針 ptr不能訪問(wèn)派生類中定義 的成員函數(shù) print2( ) } 若想訪問(wèn)其公有派生類的特定成員,可以將基類指針用顯示類型轉(zhuǎn)換為派生類指針。例如將錯(cuò)誤語(yǔ)句可改成: (( B *) ptr) print2( )。 返回 目錄 退出 第 123頁(yè) 共 141頁(yè) 2. 多基派生情形 多重繼承中存在對(duì)基類成員訪問(wèn)的二義性??朔@種二義性的方法是: 對(duì)指針要顯式地指明全路徑 將指針先強(qiáng)制轉(zhuǎn)換到不會(huì)產(chǎn)生二義性的基類 顯式指明成員來(lái)自哪個(gè)類 如有以下類層次定義: 目錄 退出 第 124頁(yè) 共 141頁(yè) 2. 多基派生情形 class base0{ protected: int b0。 }。 class base1:public base0{ protected: int b1。 }。 class base2:public base0{ protected: int b2。 }。 class derived:public base1,public base2{ float d。 pulic: derived( )。 }。 目錄 退出 第 125頁(yè) 共 141頁(yè) 2. 多基派生情形 void main() { base0 *pb0。 base1 *pb1。 base2 *pb2。 derived d,*pd。 } float d derived base1 int b1。 base0 int b0。 base2 int b2。 base0 int b0。 pd pd=amp。d pb1=pd。 pb2=pd。 pb1 pb2 pb=pd。 pb 目錄 退出 第 126頁(yè) 共 141頁(yè) 解決方法 ( 1)對(duì)指針顯示地指明全路徑: pb=(base0 *)(base1 *)pd。 ( 2)將指針先強(qiáng)制轉(zhuǎn)換到不會(huì)產(chǎn)生二義性的基類: pb=(base1 *)pd。 目錄 退出 第 127頁(yè) 共 141頁(yè) 解決方法 ( 3)顯示指明成員來(lái)自哪個(gè)類 derived::derived(int a0,int a1,int a2,float c) { b0=a0。//error base1::b0=a0。 ..................... } 返回 目錄 退出 第 128頁(yè) 共 141頁(yè) 3 . 含有公共虛基類的類層次結(jié)構(gòu) 使用虛基類,在它的幾條派生路經(jīng)的匯合處,只產(chǎn)生其一個(gè)拷貝。所以在該匯合處可以從任何一條路經(jīng)訪問(wèn)虛基類的成員,并且都使用相同的虛基類實(shí)例。 目錄 退出 第 129頁(yè) 共 141頁(yè) 結(jié)論 (1) 派生類對(duì)象的地址可以直接賦給間接公共基類的指針,并且不需進(jìn)行強(qiáng)制類型轉(zhuǎn)換。如: base * pb = amp。 d。 (2) 一個(gè)虛基類的引用,可以引用一個(gè)派生類的對(duì)象,如: base amp。 eb=d。 但是,相反的轉(zhuǎn)換是不允許的,即使用指定路徑的強(qiáng)制類型轉(zhuǎn)換也不可 。 目錄 退出 第 130頁(yè) 共 141頁(yè) 思考 對(duì)下圖給出的類層次結(jié)構(gòu)圖,分析當(dāng) base0分別是非虛基類和虛基類時(shí) ,以下語(yǔ)句序列哪些是正確的? base0 base1 base2 derived pb0 pb1 pd pb2 目錄 退出 第 131頁(yè) 共 141頁(yè) 思考 pb0=pb1。 pb0=pb2。 pb0=pd。 pb1=pd。 pb2=pd。 pb1=pb0。 pb2=pb0。 pb1=(base0 *)pb0。 pb2=(base0 *)pb0。 pd=pb1。 pd=pb2。 pd=(base1 *)pb1。 pd=(base2*)pb2。 pd=pb0。 pd=(base0 *)pb0。 pd=(base1*)pb0。 pd=(base1*)(base0*)pb0。 返回 目錄 退出 第 132頁(yè) 共 141頁(yè) 程序舉例 例 :建立一個(gè)簡(jiǎn)單的大學(xué)管理系統(tǒng),其中有學(xué)生和職工,職工中有教師。類的繼承關(guān)系如圖所示: Data_rec(虛基類) Emloyee Student Teacher E_Student 目錄 退出 第 133頁(yè) 共 141頁(yè) 例 建立一個(gè)簡(jiǎn)單的大學(xué)管理系統(tǒng) include include const char null=39。\039。 static char *strsave(char *s){ char *p。 p=new char[strlen(s)+1]。 strcpy(p,s)。 return p。 } 目錄 退出 第 134頁(yè) 共 141頁(yè) 例 建立一個(gè)簡(jiǎn)單的大學(xué)管理系統(tǒng) class Data_rec{ protected: char *name。 char *id_number。 public: Data_rec( ){ name=null。 id_number=null。} Data_rec(char *name1,char *id_number1) { name=strsave(name1)。id_number=strsave(id_number1)。} ~Data_rec( ) { delete []name。 delete []id_number。} void print( ) { cout\n name:nameendl。 coutid_number:id_numberendl。 } }。 目錄 退出 第 135頁(yè) 共 141頁(yè) 例 建立一個(gè)簡(jiǎn)單的大學(xué)管理系統(tǒng) class Student:virtual public Data_rec { protected: char *major。 long int stu_no。 int level。 public: Student(char *name1,char *id_number1,char *major1, long int stu_no1,int level1):Data_rec(name1,id_number1) { major=strsave(major1)。 stu_no=stu_no1。 level=level1。} ~Student( ){delete []major。 } void print( )。 }。 void Student::print( ) { Data_rec::print( )。 coutMajor:majorendl。 coutstu_no:stu_noendl。 coutLevel:levelendl。 } 目錄 退出 第 136頁(yè) 共 141頁(yè) 例 建立一個(gè)簡(jiǎn)單的大學(xué)管理系統(tǒng) class Employee:virtual public Data_rec{ protected: char *dept。 double salary。 public: Employee(char *name1,char *id_number1,char *dept1,double salary1) :Data_rec(name1,id_number1) { dept=strsave(dept1)。 salary=salary1。 } ~Employee( ){delete []dept。} void print( )。 }。 void Employee::print( ) { Data_rec::print( )。 coutDepartment: deptendl。 coutSalary: salaryendl。} 目錄 退出 第 137頁(yè) 共 141頁(yè) 例 建立一個(gè)簡(jiǎn)單的大學(xué)管理系統(tǒng) class Teacher:virtual public Employee{ protected: char *title。 public: Teacher(char *name1,char *id_number1,char *dept1, double salary1,char *title1):Data_rec(name1,id_number1), Employee(name1,id_number1,dept1,salary1) { title=
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1