C++大學(xué)基礎(chǔ)教程第十章_第1頁(yè)
C++大學(xué)基礎(chǔ)教程第十章_第2頁(yè)
C++大學(xué)基礎(chǔ)教程第十章_第3頁(yè)
C++大學(xué)基礎(chǔ)教程第十章_第4頁(yè)
C++大學(xué)基礎(chǔ)教程第十章_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C++大學(xué)根底教程第10章多態(tài)性與虛函數(shù)

2024/3/171多態(tài)性〔Polymorphism〕是面向?qū)ο蟪绦蛟O(shè)計(jì)的主要特征之一。多態(tài)性對(duì)于軟件功能的擴(kuò)展和軟件重用都有重要的作用。2024/3/172第十章多態(tài)性10.1多態(tài)性的概念10.2繼承中的靜態(tài)聯(lián)編10.3虛函數(shù)和運(yùn)行時(shí)的多態(tài)10.4純虛函數(shù)和抽象類(lèi)10.5繼承和派生的應(yīng)用

2024/3/17310.1多態(tài)性的概念

2024/3/174面向?qū)ο蟪绦蛟O(shè)計(jì)中多態(tài)的表現(xiàn)

不同對(duì)象對(duì)于相同的消息有不同的響應(yīng),就是面向?qū)ο蟪绦蛟O(shè)計(jì)中的多態(tài)性?xún)煞N表現(xiàn)方式:

同一個(gè)對(duì)象調(diào)用名字相同、但是參數(shù)不同的函數(shù),表現(xiàn)出不同的行為。在同一個(gè)類(lèi)中定義的重載函數(shù)的調(diào)用,屬于這種情況。不同的對(duì)象調(diào)用名字和參數(shù)都相同的函數(shù),表現(xiàn)出不同的行為。在派生類(lèi)的應(yīng)用中,經(jīng)常會(huì)看到這樣的調(diào)用。2024/3/17510.1.2多態(tài)的實(shí)現(xiàn):聯(lián)編

一個(gè)具有多態(tài)性的程序語(yǔ)句,在執(zhí)行的時(shí)候,必須確定究竟是調(diào)用哪一個(gè)函數(shù)多態(tài)性的語(yǔ)句究竟調(diào)用哪個(gè)函數(shù)的過(guò)程稱(chēng)為聯(lián)編〔Binding〕,有的資料也翻譯成“綁定”。2024/3/17610.1.2多態(tài)的實(shí)現(xiàn):聯(lián)編聯(lián)編有兩種方式:靜態(tài)聯(lián)編和動(dòng)態(tài)聯(lián)編在源程序編譯的時(shí)候就能確定調(diào)用哪個(gè)函數(shù),稱(chēng)為靜態(tài)聯(lián)編對(duì)于重載函數(shù)的調(diào)用就是在編譯的時(shí)候確定具體調(diào)用哪個(gè)函數(shù),所以是屬于靜態(tài)聯(lián)編

2024/3/17710.1.2多態(tài)的實(shí)現(xiàn):聯(lián)編動(dòng)態(tài)聯(lián)編:必須在程序運(yùn)行時(shí),才能夠確定具有多態(tài)性的語(yǔ)句究竟調(diào)用哪個(gè)函數(shù)用動(dòng)態(tài)聯(lián)編實(shí)現(xiàn)的多態(tài),也稱(chēng)為運(yùn)行時(shí)的多態(tài)。2024/3/17810.2繼承中的靜態(tài)聯(lián)編

2024/3/179派生類(lèi)對(duì)象調(diào)用同名函數(shù)

在派生類(lèi)中可以定義和基類(lèi)中同名的成員函數(shù) 這是對(duì)基類(lèi)進(jìn)行改造,為派生類(lèi)增加新的行為的一種常用的方法通過(guò)不同的派生類(lèi)的對(duì)象,調(diào)用這些同名的成員函數(shù)實(shí)現(xiàn)不同的操作,是多態(tài)性的一種在程序編譯的時(shí)候,就可以確定對(duì)象具體調(diào)用哪個(gè)成員函數(shù)___靜態(tài)聯(lián)編

2024/3/1710

例1定義Circle類(lèi)和Rectangle類(lèi)為Shape類(lèi)的派生類(lèi),通過(guò)Circle類(lèi)和Rectangle類(lèi)的對(duì)象調(diào)用同名函數(shù)getArea()顯示對(duì)象的面積。

//例11.1:shape.h#ifndefSHAPE_H#defineSHAPE_H

classShape{ public: doublegetArea()const; voidprint()const; }; //Shape類(lèi)定義結(jié)束基類(lèi)Shape的定義2024/3/1711

classCircle:publicShape{ public: Circle(int=0,int=0,double=0.0); doublegetArea()const; //返回面積

voidprint()const; //輸出Circle類(lèi)對(duì)象tprivate: intx,y; //圓心座標(biāo)

doubleradius; //圓半徑}; //派生類(lèi)Circle定義結(jié)束classRectangle:publicShape{ public: Rectangle(int=0,int=0);//構(gòu)造函數(shù)

doublegetArea()const; //返回面積

voidprint()const; //輸出Rectangle類(lèi)對(duì)象private: inta,b; //矩形的長(zhǎng)和寬}; //派生類(lèi)Rectangle定義結(jié)束#endif派生類(lèi)Circle的定義派生類(lèi)Rectangle的定義2024/3/1712

//例:shape.cpp#include<iostream>usingnamespacestd;#include"shape.h"

doubleShape::getArea()const{cout<<"基類(lèi)的getArea函數(shù),面積是";return0.0;} //Shape類(lèi)getArea函數(shù)的定義voidShape::print()const{ cout<<"BaseclassObject"<<endl;} //Shape類(lèi)print函數(shù)定義包含頭文件基類(lèi)成員函數(shù)的定義2024/3/1713

Circle::Circle(intxValue,intyValue,doubleradiusValue){ x=xValue;y=yValue; radius=radiusValue;} //Circle類(lèi)構(gòu)造函數(shù)doubleCircle::getArea()const{cout<<"Circle類(lèi)的getArea函數(shù),面積是";

return3.14159*radius*radius;} //Circle類(lèi)getArea函數(shù)定義voidCircle::print()const{cout<<"centeris";cout<<"x="<<x<<"y="<<y;cout<<";radiusis"<<radius<<endl;} //Circle類(lèi)print函數(shù)定義Circle類(lèi)成員函數(shù)的定義2024/3/1714

Rectangle::Rectangle(intaValue,intbValue){ a=aValue;b=bValue;} //Rectangle類(lèi)構(gòu)造函數(shù)doubleRectangle::getArea()const{cout<<"Rectangle類(lèi)的getArea函數(shù),面積是";

returna*b;} //Rectangle類(lèi)getArea函數(shù)定義voidRectangle::print()const{cout<<"hightis"<<a;cout<<"widthis"<<b<<endl;} //Rectangle類(lèi)print函數(shù)定義

Rectangle類(lèi)成員函數(shù)的定義2024/3/1715

//例1:11_1.cpp#include<iostream>usingstd::cout;usingstd::endl;

#include"shape.h"http://包含頭文件voidmain(){Circlecircle(22,8,3.5);//創(chuàng)立Circle類(lèi)對(duì)象Rectanglerectangle(10,10);//創(chuàng)立Rectangle類(lèi)對(duì)象cout<<"調(diào)用的是";cout<<circle.getArea()<<endl; //靜態(tài)聯(lián)編cout<<"調(diào)用的是";cout<<rectangle.getArea()<<endl;//靜態(tài)聯(lián)編} //結(jié)束main函數(shù)例11.1的主函數(shù)調(diào)用的是Circle類(lèi)的getarea函數(shù),面積是38.4845

調(diào)用的是Ractangle類(lèi)的getarea函數(shù),面積是100

2024/3/1716派生類(lèi)對(duì)象調(diào)用同名函數(shù)對(duì)于派生類(lèi)對(duì)象調(diào)用成員函數(shù),可以有以下的結(jié)論:派生類(lèi)對(duì)象可以直接調(diào)用本類(lèi)中與基類(lèi)成員函數(shù)同名的函數(shù),不存在二義性;在編譯時(shí)就能確定對(duì)象將調(diào)用哪個(gè)函數(shù),屬于靜態(tài)聯(lián)編,不屬于運(yùn)行時(shí)的多態(tài)。2024/3/1717通過(guò)基類(lèi)指針調(diào)用同名函數(shù)

從繼承的角度來(lái)看,派生類(lèi)對(duì)象是基類(lèi)對(duì)象的一個(gè)具體的特例。例如,Circle類(lèi)是Shape類(lèi)的公有繼承,“圓”是“圖形”的一種特例?;蛘哒f(shuō),圓是一種特定的圖形,具有圖形的根本特征。但是,反之不然。不可以說(shuō)基類(lèi)的對(duì)象具有派生類(lèi)對(duì)象的特征,基類(lèi)對(duì)象也不是派生類(lèi)對(duì)象的一個(gè)特例。2024/3/1718通過(guò)基類(lèi)指針調(diào)用同名函數(shù)

在關(guān)于基類(lèi)對(duì)象和派生類(lèi)對(duì)象的操作上,允許以下的操作:派生類(lèi)對(duì)象可以賦值給基類(lèi)對(duì)象;派生類(lèi)對(duì)象的地址可以賦值給基類(lèi)對(duì)象的指針??梢詫⒒?lèi)對(duì)象的引用,定義為派生類(lèi)對(duì)象的別名。通過(guò)派生類(lèi)對(duì)象的地址初始化的基類(lèi)對(duì)象的指針,可以訪問(wèn)基類(lèi)的公有成員,也可以訪問(wèn)和基類(lèi)成員函數(shù)同名的函數(shù)。2024/3/1719通過(guò)基類(lèi)指針調(diào)用同名函數(shù)

以下這些操作是不允許進(jìn)行的:不可以將基類(lèi)對(duì)象賦值給派生類(lèi)對(duì)象;不可以用基類(lèi)對(duì)象的地址初始化派生類(lèi)對(duì)象的指針;不可以將派生類(lèi)對(duì)象的引用定義為基類(lèi)對(duì)象的別名;不可以通過(guò)用派生類(lèi)對(duì)象初始化的基類(lèi)對(duì)象的指針,訪問(wèn)派生類(lèi)新增加的和基類(lèi)公有成員不重名的公有成員。2024/3/1720

例10.2在例10.1所定義的類(lèi)的根底上,觀察通過(guò)派生類(lèi)對(duì)象地址初始化的基類(lèi)對(duì)象的指針訪問(wèn)getArea函數(shù)的結(jié)果。#include"shape.h" //包含頭文件voidmain(){Shape*shape_ptr; Circlecircle(22,8,3.5);Rectanglerectangle(10,10); shape_ptr=&circle;cout<<shape_ptr->getArea()<<endl;//靜態(tài)聯(lián)編

shape_ptr=&rectangle;//Rectangle類(lèi)對(duì)象地址初始化基類(lèi)指針cout<<shape_ptr->getArea()<<endl;//靜態(tài)聯(lián)編} //結(jié)束main函數(shù)調(diào)用基類(lèi)的getArea函數(shù),面積是0調(diào)用基類(lèi)的getArea函數(shù),面積是02024/3/172110.3虛函數(shù)和運(yùn)行時(shí)的多態(tài)

2024/3/172210.3虛函數(shù)和運(yùn)行時(shí)的多態(tài)可以通過(guò)指向基類(lèi)的指針訪問(wèn)基類(lèi)和派生類(lèi)的同名函數(shù),實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)必須將基類(lèi)中的同名函數(shù)定義為虛函數(shù)

2024/3/172310.3.1虛函數(shù)虛函數(shù)在類(lèi)定義中聲明函數(shù)原型的時(shí)候說(shuō)明:

virtual<返回值類(lèi)型>函數(shù)名(參數(shù)表);在函數(shù)原型中聲明函數(shù)是虛函數(shù)后,具體定義這個(gè)函數(shù)時(shí)就不需要再說(shuō)明它是虛函數(shù)了如果在基類(lèi)中直接定義同名函數(shù),定義虛函數(shù)的格式是:virtual<返回值類(lèi)型>函數(shù)名(參數(shù)表){<函數(shù)體>}2024/3/172410.3.1虛函數(shù)基類(lèi)中的函數(shù)聲明或定義為虛函數(shù)后,派生類(lèi)的同名函數(shù)無(wú)論是不是用virtual來(lái)說(shuō)明,都將自動(dòng)地成為虛函數(shù)從程序可讀性考慮,一般都會(huì)在這些函數(shù)的聲明或定義時(shí),用virtual來(lái)加以說(shuō)明對(duì)例10.2中的頭文件稍加修改,就可以得到運(yùn)行時(shí)的多態(tài)的效果將基類(lèi)和派生類(lèi)中的getArea函數(shù)都聲明為虛函數(shù),重新編譯和運(yùn)行程序即可2024/3/1725

例10.3將例10.2進(jìn)行修改,使得程序具有運(yùn)行時(shí)的多態(tài)的效果。

//例11.3:shape1.h#ifndefSHAPE_H#defineSHAPE_H

classShape{ public:

virtualdoublegetArea()const; voidprint()const; }; //Shape類(lèi)定義結(jié)束基類(lèi)Shape的定義2024/3/1726

classCircle:publicShape{ public: Circle(int=0,int=0,double=0.0);

virtualdoublegetArea()const; //返回面積

voidprint()const; //輸出Circle類(lèi)對(duì)象tprivate: intx,y; //圓心座標(biāo)

doubleradius; //圓半徑}; //派生類(lèi)Circle定義結(jié)束classRectangle:publicShape{ public: Rectangle(int=0,int=0); //構(gòu)造函數(shù)

virtual

doublegetArea()const; //返回面積

voidprint()const;//輸出Rectangle類(lèi)對(duì)象private: inta,b; //矩形的長(zhǎng)和寬}; //派生類(lèi)Rectangle定義結(jié)束#endif派生類(lèi)Circle的定義派生類(lèi)Rectangle的定義2024/3/1727

//例10.3:shape1.cpp#include<iostream>usingnamespacestd;#include"shape1.h"

doubleShape::getArea()const{cout<<"基類(lèi)的getArea函數(shù),面積是";return0.0;} //Shape類(lèi)getArea函數(shù)的定義voidShape::print()const{ cout<<"BaseclassObject"<<endl;} //Shape類(lèi)print函數(shù)定義包含頭文件基類(lèi)成員函數(shù)的定義2024/3/1728

Circle::Circle(intxValue,intyValue,doubleradiusValue){ x=xValue;y=yValue; radius=radiusValue;} //Circle類(lèi)構(gòu)造函數(shù)doubleCircle::getArea()const{cout<<"Circle類(lèi)的getArea函數(shù),面積是";

return3.14159*radius*radius;} //Circle類(lèi)getArea函數(shù)定義voidCircle::print()const{cout<<"centeris";cout<<"x="<<x<<"y="<<y;cout<<";radiusis"<<radius<<endl;} //Circle類(lèi)print函數(shù)定義Circle類(lèi)成員函數(shù)的定義2024/3/1729

Rectangle::Rectangle(intaValue,intbValue){ a=aValue;b=bValue;} //Rectangle類(lèi)構(gòu)造函數(shù)doubleRectangle::getArea()const{cout<<"Rectangle類(lèi)的getArea函數(shù),面積是";

returna*b;} //Rectangle類(lèi)getArea函數(shù)定義voidRectangle::print()const{cout<<"hightis"<<a;cout<<"widthis"<<b<<endl;} //Rectangle類(lèi)print函數(shù)定義

Rectangle類(lèi)成員函數(shù)的定義2024/3/1730

//例10.3:10_3.cpp#include<iostream>usingstd::cout;usingstd::endl;

#include"shape1.h" //包含頭文件voidmain(){Shape*shape_ptrCirclecircle(22,8,3.5); //創(chuàng)立Circle類(lèi)對(duì)象Rectanglerectangle(10,10);//創(chuàng)立Rectangle類(lèi)對(duì)象shape_ptr=&circle;cout<<shape_ptr->getArea()<<endl; //動(dòng)態(tài)聯(lián)編shape_ptr=&rectangle;cout<<shape_ptr->getArea()<<endl;//動(dòng)態(tài)聯(lián)編} //結(jié)束main函數(shù)調(diào)用Circle類(lèi)的getArea函數(shù),面積是38.4845調(diào)用Rectangle類(lèi)的getArea函數(shù),面積是100運(yùn)行時(shí)的多態(tài)2024/3/173110.3.1虛函數(shù)這個(gè)結(jié)果和例10.2的結(jié)果大不相同這種方式的函數(shù)調(diào)用,在編譯的時(shí)候是不能確定具體調(diào)用哪個(gè)函數(shù)的,只有程序運(yùn)行后,才能知道指針shape_ptr中存放的是什么對(duì)象的地址,然后再?zèng)Q定調(diào)用哪個(gè)派生類(lèi)的函數(shù)

-----是一種運(yùn)行時(shí)決定的多態(tài)性

2024/3/173210.3.1虛函數(shù)要實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài),需要以下條件:必須通過(guò)指向基類(lèi)對(duì)象的指針訪問(wèn)和基類(lèi)成員函數(shù)同名的派生類(lèi)成員函數(shù);或者用派生類(lèi)對(duì)象初始化的基類(lèi)對(duì)象的引用訪問(wèn)和基類(lèi)成員函數(shù)同名的派生類(lèi)成員函數(shù);派生類(lèi)的繼承方式必須是公有繼承;基類(lèi)中的同名成員函數(shù)必須定義為虛函數(shù)。2024/3/173310.3.2虛函數(shù)的使用虛函數(shù)必須正確的定義和使用。否那么,即使在函數(shù)原型前加了virtual的說(shuō)明,也可能得不到運(yùn)行時(shí)多態(tài)的特性。必須首先在基類(lèi)中聲明虛函數(shù)在多級(jí)繼承的情況下,也可以不在最高層的基類(lèi)中聲明虛函數(shù)。例如在第二層定義的虛函數(shù),可以和第三層的虛函數(shù)形成動(dòng)態(tài)聯(lián)編。但是,一般都是在最高層的基類(lèi)中首先聲明虛函數(shù)。2024/3/173410.3.2虛函數(shù)的使用基類(lèi)和派生類(lèi)的同名函數(shù),必須函數(shù)名、返回值、參數(shù)表全部相同,才能作為虛函數(shù)來(lái)使用。否那么,即使函數(shù)用virtual來(lái)說(shuō)明,也不具有虛函數(shù)的行為。靜態(tài)成員函數(shù)不可以聲明為虛函數(shù)。構(gòu)造函數(shù)也不可以聲明為虛函數(shù)。析構(gòu)函數(shù)可以聲明為虛函數(shù)----虛析構(gòu)函數(shù)2024/3/1735

例10.4虛函數(shù)的正確使用。分析以下程序,編譯時(shí)哪個(gè)語(yǔ)句會(huì)出現(xiàn)錯(cuò)誤?為什么?將有錯(cuò)誤的語(yǔ)句屏蔽掉以后,程序運(yùn)行結(jié)果如何?其中哪些調(diào)用是靜態(tài)聯(lián)編,哪些是動(dòng)態(tài)聯(lián)編?

#include<iostream.h>classBB{public:virtualvoidvf1(){cout<<"BB::vf1被調(diào)用\n";}virtualvoidvf2(){cout<<"BB::vf2被調(diào)用\n";}voidf(){cout<<"BB::f被調(diào)用\n";}};classDD:publicBB{public:virtualvoidvf1(){cout<<"DD::vf1被調(diào)用\n";}voidvf2(inti){cout<<i<<endl;}voidf(){cout<<"DD::f\n被調(diào)用";}};有虛函數(shù)的基類(lèi)派生類(lèi)2024/3/1736

voidmain(){DDd;BB*bp=&d;bp->vf1();bp->vf2();bp->vf2(10);bp->f();}將這個(gè)語(yǔ)句注釋掉后,運(yùn)行結(jié)果將顯示:

DD::vf1被調(diào)用BB::vf2被調(diào)用BB::f被調(diào)用函數(shù)調(diào)用bp->vf2(10);是錯(cuò)誤的。因?yàn)榕缮?lèi)的vf2函數(shù)和基類(lèi)的vf2函數(shù)的參數(shù)不同,派生類(lèi)的vf2就不是虛函數(shù)。

其中bp->vf1()調(diào)用是動(dòng)態(tài)聯(lián)編。bp->vf2()是靜態(tài)聯(lián)編。bp->f()也是靜態(tài)聯(lián)編。

//2024/3/1737classShape

{ public: doublegetArea()const; };classCircle:publicShape{ public: Circle(int=0,int=0,double=0.0);doublegetArea()const; private: intx,y;doubleradius; }; classRectangle:publicShape

{ public: Rectangle(int=0,int=0);

doublegetArea()const;

private: inta,b; }; //例10.3:voidmain(){Shape*shape_ptrCirclecircle(22,8,3.5);

Rectanglerectangle(10,10);shape_ptr=&circle;cout<<shape_ptr->getArea()<<endl;

shape_ptr=&rectangle;cout<<shape_ptr->getArea()<<endl;}

virtualvirtual調(diào)用基類(lèi)的getArea函數(shù),面積是0靜態(tài)聯(lián)編調(diào)用Circle類(lèi)的getArea函數(shù),面積是38.4845動(dòng)態(tài)聯(lián)編調(diào)用Rectangle類(lèi)的getArea函數(shù),面積是100動(dòng)態(tài)聯(lián)編virtual2024/3/173810.3.3虛析構(gòu)函數(shù)如果用動(dòng)態(tài)創(chuàng)立的派生類(lèi)對(duì)象的地址初始化基類(lèi)的指針,創(chuàng)立的過(guò)程不會(huì)有問(wèn)題:仍然是先調(diào)用基類(lèi)構(gòu)造函數(shù),再執(zhí)行派生類(lèi)構(gòu)造函數(shù)。但是,在用delete運(yùn)算符刪除這個(gè)指針的時(shí)候,派生類(lèi)成員所占用的空間將不會(huì)被釋放由于指針是指向基類(lèi)的,通過(guò)靜態(tài)聯(lián)編,只會(huì)調(diào)用基類(lèi)的析構(gòu)函數(shù),釋放基類(lèi)成員所占用的空間。2024/3/1739

voidmain(){ Shape*shape_ptr; shape_ptr=newCircle(3,4,5); deleteshape_ptr;}程序運(yùn)行后在屏幕上顯示:Shape類(lèi)構(gòu)造函數(shù)被調(diào)用Circle類(lèi)構(gòu)造函數(shù)被調(diào)用Shape類(lèi)析構(gòu)函數(shù)被調(diào)用2024/3/174010.3.3虛析構(gòu)函數(shù)為了解決派生類(lèi)對(duì)象釋放不徹底的問(wèn)題,必須將基類(lèi)的析構(gòu)函數(shù)定義為虛析構(gòu)函數(shù)

格式:virtual~Shape();

此時(shí),無(wú)論派生類(lèi)析構(gòu)函數(shù)是不是用virtual來(lái)說(shuō)明,也都是虛析構(gòu)函數(shù)。再用deleteshape_ptr來(lái)釋放基類(lèi)指針時(shí),就會(huì)通過(guò)動(dòng)態(tài)聯(lián)編調(diào)用派生類(lèi)的析構(gòu)函數(shù)2024/3/174110.3.3虛析構(gòu)函數(shù)將例10.5程序中的~Shape析構(gòu)函數(shù)作以上修改后,運(yùn)行的結(jié)果將是: Shape類(lèi)構(gòu)造函數(shù)被調(diào)用 Circle類(lèi)構(gòu)造函數(shù)被調(diào)用 Circle類(lèi)析構(gòu)函數(shù)被調(diào)用 Shape類(lèi)析構(gòu)函數(shù)被調(diào)用2024/3/174210.4純虛函數(shù)和抽象類(lèi)

2024/3/174310.4純虛函數(shù)和抽象類(lèi)在前面的幾個(gè)例子中,基類(lèi)Shape本身并不是一個(gè)具體的“形狀”的抽象,而是各種實(shí)際的“形狀”的抽象。在C++中,對(duì)于那些在基類(lèi)中不需要定義具體的行為的函數(shù),可以定義為純虛函數(shù)。

對(duì)于那些只是反映一類(lèi)事物公共特性的類(lèi),在C++中可以定義為“抽象類(lèi)”。2024/3/174410.4純虛函數(shù)和抽象類(lèi)virtual<返回值

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論