版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1.7 指針和引用55. 已知int d=5, *pd=&d, b=3; 求下列表達式的值。 A. *pd*b B. +*pd-b C. *pd+ D. +(*pd)答:15, 3 , 5, 6 56選擇填充。(1)選擇正確的說明語句為( )。A. int Nb; B. int N4,9;C. int N; D. int *N10;答:B(2)若有定義:int a=100,*p=&a;則*p的值是( )。 A變量p的地址 B 變量a的地址值 C變量a的值 D.無意義答:C(3)下述程序的輸出結(jié)果是( )。#include void main() int a5=2,4,6,8,10; int *
2、p=a, *q=&p; cout*(p+), *q;A. 4,4 B. 2,2 C. 4,2 D. 4,5答:B(4)下述程序片段的輸出是( )。int a34=1,2,3,4,5,6,7,8;int x, *p=a0;x=(*p)*(*p+2)*(*p+4);coutxendl;A 15 B 14 C 16 D 13答:A(5)若有以下定義,則下列對數(shù)組引用正確的是( )。int (*q)3 = new int23;A. q23 B. *q C. *(*q+2) D. *(*(q+2)+3)答:C(6)若要用如下程序片段使指針變量p指向一個存儲動態(tài)分配的存儲單元: float *p;p=(f
3、loat * ) new float;則空白處應填入: Afloat * B *float C 省略; D.( float )(7)下列表示引用的方法中,( )是正確的。已知:int m=10;A. int &x=m; B. int &y= 10; C.int &z; D. float &t = &m;答:A57分析下列程序的結(jié)果。#include int &fun( int n, int s) int &m=sn; return m;void main()int s =15,4,3,2,1,0; fun(3, s)=10; coutfun(3,s)endl;答:1058用指針作為函數(shù)的參數(shù),
4、設(shè)計一個實現(xiàn)兩個參數(shù)交換的函數(shù)。輸入3個實數(shù),按升序排序后輸出。59編寫函數(shù)void fun(int *a,int *n,int pos,int x);其功能是將x值插入到指針a所指的一維數(shù)組中,其中指針n所指存儲單元中存放的是數(shù)組元素個數(shù),pos為指定插入位置的下標。60編寫函數(shù)void fun(char *s),其功能是將s所指的字符串逆序存放。61 輸入一個字符串, 串內(nèi)有數(shù)字和非數(shù)字字符, 例如,abc2345 345fdf678jdhfg945。將其中連續(xù)的數(shù)字作為一個整數(shù),依次存放到另一個整型數(shù)組b中。如將2345存放到bO、345放入b1、678放入b2、統(tǒng)計出字符串中的整數(shù)個數(shù)
5、,并輸出這些整數(shù)。要求在主函數(shù)中完成輸入和輸出工作。設(shè)計一個函數(shù),把指向字符串的指針和指向整數(shù)的指針作為函數(shù)的參數(shù),并完成從字符串中依次提取出整數(shù)的工作。62有5個學生,每個學生的數(shù)據(jù)結(jié)構(gòu)包括學號、姓名、年齡、C+成績、數(shù)學成績和英語成績、總平均分,從鍵盤輸入5個學生的學號、姓名、3門課的成績,計算3門課的總平均分,最后將5個學生的數(shù)據(jù)輸出。要求各個功能用函數(shù)來實現(xiàn)。第2章 C+面向?qū)ο蟪绦蛟O(shè)計21 類和對象1什么是類?類的定義格式?類的成員一般分為哪兩部分?它們的區(qū)別如何?“類”是對具有共同的屬性特征和行為特征的對象的概括和抽象。類的定義格式:class 類名 private: 私有數(shù)據(jù)成員
6、和成員函數(shù) public: 公有數(shù)據(jù)成員和成員函數(shù) ;類的成員一般分為數(shù)據(jù)成員和成員函數(shù)兩部分。數(shù)據(jù)成員一般用來表示對象屬性特征,而成員函數(shù)一般表示了對象的可以進行的操作,即行為特征。2類與結(jié)構(gòu)體有什么區(qū)別?類中可以包含兩類成員數(shù)據(jù)成員和成員函數(shù);而標準C語言中的結(jié)構(gòu)體只能包含數(shù)據(jù)成員;但是C+中的結(jié)構(gòu)體對C語言中的結(jié)構(gòu)體有擴展,C+中的結(jié)構(gòu)體也可以兩類成員數(shù)據(jù)成員和成員函數(shù);因此C+中的類和C+中的結(jié)構(gòu)體出來在定義方式上不一樣之外(class,struct ),還有就是它們的缺省封裝字是不一樣的,一個是private,一個是public。3什么是對象?如何定義一個對象?對象的成員如何表示?對
7、象是類的實例,是類的變量。對象的定義: 類名 對象名稱; 或:類名 * 對象指針;對象成員的表示:對象名稱.成員名字;或: 對象指針成員名字;4什么是構(gòu)造函數(shù)?構(gòu)造函數(shù)有哪些特點?構(gòu)造函數(shù)是類的成員函數(shù),它有以下特點:u 構(gòu)造函數(shù)的名字必須與類名相同。u 構(gòu)造函數(shù)可以有任意的形參,但不能具有返回值。u 定義對象時,編譯系統(tǒng)會自動地調(diào)用構(gòu)造函數(shù)。u 構(gòu)造函數(shù)可以重載5什么是析構(gòu)函數(shù)?析構(gòu)函數(shù)有哪些特點?析構(gòu)函數(shù)也是類的成員函數(shù),它有以下特點:u 析構(gòu)函數(shù)名也應與類名相同,只是在函數(shù)名前面加一個波浪符。u 析構(gòu)函數(shù)不能帶任何參數(shù),也沒有返回值。u 每個類有而且只能有一個析構(gòu)函數(shù)。析構(gòu)函數(shù)不能重載。
8、 6什么是默認構(gòu)造函數(shù)和默認析構(gòu)函數(shù)?假如用戶沒有自己編寫構(gòu)造函數(shù)或析構(gòu)函數(shù),編譯系統(tǒng)也會自動生成一個構(gòu)造函數(shù)和析構(gòu)函數(shù),這就是默認的構(gòu)造函數(shù)和析構(gòu)函數(shù),但是這兩個函數(shù)沒有任何參數(shù),也不進行任何操作。7什么是復制構(gòu)造函數(shù)?它的功能和特點是什么?復制構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),它用來在已存在的對象基礎(chǔ)上建立一個新對象。 復制構(gòu)造函數(shù)的名稱也和類名是一樣的,但是它的形式參數(shù),都是指向一個已經(jīng)存在的對象,因此它的形式參數(shù)都是這種形式:“const 類名 &ob”,即是一個對象的引用。8什么是靜態(tài)成員?靜態(tài)成員的作用是什么?9如何對對象進行初始化? 對象的初始化都是通過構(gòu)造函數(shù)進行的,只要在聲明對象
9、時,逐個添好構(gòu)造函數(shù)的實參。10什么是友元?它的作用有哪些?什么是友元函數(shù)和友元類?11什么是this指針?它有何作用?一個類可以同時有很多對象存在,許多不同的對象可以調(diào)用相同的成員函數(shù),編譯系統(tǒng)為了知道當前是那個對象在調(diào)用成員函數(shù),因此定義了this指針,this指針其實就是指向當前對象的指針。12什么是類的作用域?對象的生存期有何不同?類的作用域簡稱類域,它是指在類的定義中由一對花括號所括起來的部分,每一個類都具有相應的類域。類域中定義的變量不能使用auto,register和extern等修飾符,只能用static修飾符,函數(shù)也不能用extern修飾符。所謂對象的生存期是指對象從被創(chuàng)建開
10、始到被釋放為止的時間,按生存期的不同對象可分為如下三種:1、局部對象:當對象被定義時調(diào)用構(gòu)造函數(shù),該對象被創(chuàng)建,當程序退出定義該對象所在的函數(shù)體或程序塊時,調(diào)用析構(gòu)函數(shù),釋放該對象。2、靜態(tài)對象:當程序第一次執(zhí)行所定義的靜態(tài)對象時,該對象被創(chuàng)建,當程序結(jié)束時,該對象被釋放。3、全局對象:當程序開始時,調(diào)用構(gòu)造函數(shù)創(chuàng)建該對象,當程序結(jié)束時調(diào)用析構(gòu)函數(shù)釋放該對象。13分析下列程序的運行結(jié)果。程序1:#include #include class CCounter private: double m_value; public: void SetValue(double v) m_value=v;
11、double GetValue(); int GetNum(); ;double CCounter:GetValue() return sin(10.0*m_value);int CCounter: GetNum() return (int)m_value; void main() CCounter sam; sam.SetValue(50.0); coutThe value is: sam.GetValue()endl; coutThe num is: sam.GetNum()endl;程序2:#include #include class person int age; char name
12、10; public: void init(int i, char *str) age = i; strcpy(name, str); void display() coutname is age years old; ; void main() person demo; demo.init(30, LiMing); demo.display();程序3:#include #include class person int age; char *name; public: void init(int i, char *str) int j; j=strlen(str)+1; name=new
13、charj; strcpy(name, str); age = i; person() delete name; coutdestructor is called.; void display() coutname is age years oldn; ;void main() person demo; demo.init(30, LiMing); demo.display(); 程序4:#include class CSam public: static int m; CSam() m+; CSam( int n ) m = n; static void testm() m+; ; int
14、CSam:m =0;void main() CSam A; CSam B(3); A.testm(); CSam:testm(); coutm = B.mendl; 14定義一個描述學生基本情況的類,數(shù)據(jù)成員包括姓名、學號、C+、英語和數(shù)學成績,成員函數(shù)包括輸出數(shù)據(jù)、置姓名和學號、置3門課的成績,求出總成績和平均成績。#include #include class CStudentInfo char stu_name20; char stu_id10; float C_score; float E_score; float M_score; public: CStudentInfo(char
15、*name, char *id) strcpy(stu_name,name); strcpy(stu_id,id); C_score=E_score=M_score=0.00; void Init(float score1, float score2,float score3) C_score=score1; E_score=score2; M_score=score3; float GetTotal() return (C_score+E_score+M_score); float GetAvg() return (C_score+E_score+M_score)/3; void Displ
16、ay() coutName:stu_name ID:stu_idendl;coutC Language:C_score English:E_score Mathmetics: M_scoreendl; coutTotal is:GetTotal() Average is:GetAvg()endl; ;void main() CStudentInfo stu(andrew,98041011); float score1,score2,score3; coutscore1;coutscore2;coutscore3; stu.Init(score1,score2,score3); stu.Disp
17、lay(); 15設(shè)有一個描述坐標點的CPoint類,其私有變量x和y代表一個點的x、y坐標值。編寫程序?qū)崿F(xiàn)以下功能:利用構(gòu)造函數(shù)傳遞參數(shù),并設(shè)其默認參數(shù)值為60和75,利用成員函數(shù)display()輸出這一默認的值;利用公有成員函數(shù)setpoint()將坐標值修改為(80,150),并利用成員函數(shù)輸出修改后的坐標值。16以下是一個類的測試程序,給出類的定義,構(gòu)造一個完整的程序。執(zhí)行程序時的輸出如下。輸出結(jié)果:200-60=140主函數(shù)為:void main() CTest c; c.init(200, 60); c.print();CTest類的構(gòu)造如下:#include class CTe
18、st int x,y;public:void init(int x0,int y0)x=x0;y=y0; void print() cout200-60=x-yendl;17設(shè)有一個類,其定義如下:#include class CSample char *p1, *p2; public: void init(char *s1, char *s2); void print() coutp1 =p1np2 = p2n; void copy(CSample &one); void free(); 成員函數(shù)init()是將s1和s2所指向的字符串分別送到p1和p2所指向的動態(tài)申請的內(nèi)存空間中,函數(shù)co
19、py將對象one中的兩個字符串復制到當前的對象中,free()函數(shù)釋放p1和p2所指向的動態(tài)分配的內(nèi)存空間。設(shè)計一個完整的程序,包括完成這3個函數(shù)的定義和測試工作。 #include #include class CSample char *p1, *p2; public: void init(char *s1, char *s2); void print() coutp1 =p1np2 = p2p1; delete this-p2;void main() CSample a,b; a.init(My name is ,andrew); a.print(); b.copy(a); b.prin
20、t(); a.free(); 本程序的設(shè)計是有問題的,最好是把new分配內(nèi)存寫在構(gòu)造函數(shù)中!如此無法進行b.free()!因為對象b沒有用new分配內(nèi)存,因此不可以用delete運算符。18設(shè)有一個類,其定義如下:#include class CArray int nSizeOfInt; /整型數(shù)組的大小 int nNumOfInt; /整型數(shù)組中實際存放的元素個數(shù) int nSizeOfFloat; /浮點數(shù)組的大小 int nNumOfFloat; /浮點數(shù)組中實際存放的元素個數(shù) int *pInt; /指向整型數(shù)組,動態(tài)分配內(nèi)存空間 float *pFloat; /指向浮點數(shù)組,動態(tài)分配
21、內(nèi)存空間 public: CArray(int nIntSize=100, int nFloatSize=200); void put(int n); /將n加入到整型數(shù)組中 void put(float x); /將x加入到浮點數(shù)組中 int getInt(int index); /取整型數(shù)組中第index個元素,index從0開始 float getFloat(int index); /取浮點數(shù)組中第index個元素,index從0開始 CArray(); /析構(gòu)函數(shù),釋放動態(tài)分配的內(nèi)存空間 void print(); /分別輸出整型數(shù)組和浮點數(shù)組中的所有元素;構(gòu)造完整的程序,包括類成員函
22、數(shù)的定義和測試程序的設(shè)計。構(gòu)造函數(shù)中的nIntSize 和nFloatSize分別表示整型數(shù)組和浮點數(shù)組的大小。CArray:CArray(int nIntSize, int nFloatSize) nSizeOfInt=nIntSize; pInt=new intnSizeOfInt; nSizeOfFloat=nFloatSize; pFloat=new floatnSizeOfFloat;nNumOfInt=0;nNumOfFloat=0;void CArray:put(int n) pIntnNumOfInt+=n;void CArray:put(float x) pFloatnNum
23、OfFloat+=x; int CArray:getInt(int index)if (index=0 & index=0 & index=nNumOfFloat) return pFloatindex;CArray:CArray() delete pFloat; delete pInt;void CArray:print() for( int i=0;inNumOfInt;i+) coutpInti ; coutn; for( int j=0;jnNumOfFloat;j+) coutpFloatj ; coutn;void main() int a=10; float x=10.5; CA
24、rray MyArray(10,15); MyArray.put(a); MyArray.put(x); MyArray.put(a+1); MyArray.put(x+1); MyArray.put(a+2); MyArray.put(x+2); MyArray.print();19在一個程序中,實現(xiàn)如下要求:(1)構(gòu)造函數(shù)重載;(2)成員函數(shù)設(shè)置默認參數(shù);(5)使用不同的構(gòu)造函數(shù)創(chuàng)建不同的對象。#include#includeclass stud private: int num; char name10; char sex; public: stud() num=10010; strcp
25、y(name,Wang Li); sex=F; stud(int n,char nam ,char s ) num=n; strcpy(name, nam) ; sex=s; void display() coutnum:numendl; coutname:nameendl; coutsex:sexendl; ; void main() stud stud1; stud1.display(); stud stud2(10011,Zhang fun,m); stud2.display(); 22 繼承和派生類20派生類是如何定義的?它有哪些特點? 定義派生類的一般形式為: class 派生類名:
26、引用權(quán)限 基類名 派生類新增的數(shù)據(jù)成員 派生類新增的成員函數(shù) ;派生類繼承了基類的所有數(shù)據(jù)成員和成員函數(shù),并增加新的成員。21派生類的繼承方式有哪些?它們各有哪些特點?這是繼承技術(shù)中比較關(guān)鍵的問題。從基類繼承來的成員的引用,不是簡單地把基類的私有成員和公用成員直接作為派生類的私有成員和公用成員來使用,而要根據(jù)基類成員的“封裝權(quán)限”和派生類聲明的“引用權(quán)限”共同決定。當引用權(quán)限為public時,稱為“公用派生類”。在公用派生類中,基類的public成員和protected成員仍然成為派生類中的public成員和protected成員;然而基類中的私有成員卻成為了派生類中的“不可訪問的成員”,不能
27、被派生類使用。當引用權(quán)限為private時,稱為“私有派生類”。在私有派生類中,基類的公用成員和保護成員成為了派生類中的私有成員,基類的私有成員成為派生類“不可訪問的成員”。從以上兩點可以看出,基類中的私有成員在派生類中都成為了“不可訪問的成員” 。因此在繼承中經(jīng)常使用另外一種封裝字protected,被protected封裝的成員稱為“保護成員”, 保護成員和私有成員相似,不能被外界引用,但它卻可以被派生類的成員函數(shù)引用。22在定義派生類的過程中,如何對基類的數(shù)據(jù)成員進行初始化?基類的數(shù)據(jù)成員初始化往往是通過基類的構(gòu)造函數(shù)進行的,但是在么在建立派生類的對象時,是不會自動執(zhí)行基類的構(gòu)造函數(shù),因
28、而就會使基類中成員變量未初始化。所以在設(shè)計派生類的構(gòu)造函數(shù)時,不僅要考慮派生類所增加的成員變量初始化,還應當考慮基類的成員變量初始化。在執(zhí)行派生類的構(gòu)造函數(shù)時,應當調(diào)用基類的構(gòu)造函數(shù)。因此考慮到基類成員變量初始化后,派生類的構(gòu)造函數(shù)一般形式為: 派生類構(gòu)造函數(shù)名(參數(shù)表):基類構(gòu)造函數(shù)名(參數(shù)表)例如:student(int n,char nam,char s,int a,char ad ):stud(n,nam,s)其中,student類是stud的派生類。23在派生類中能否直接訪問基類中的私有成員?在派生類中如何實現(xiàn)訪問基類中的私有成員? 在派生類中是不能直接訪問基類中的私有成員的,要在派
29、生類中訪問基類中的私有成員,只能通過基類所提供的public或protected封裝的成員函數(shù)進行。 24什么是虛基類?它的作用如何?在聲明派生類時,在基類的引用權(quán)限前面加上virtual,就將基類聲明成了虛基類,即: class 派生類名:virtual 引用權(quán)限 基類名虛基類的引入主要是針對多重派生的,是為了消除派生類的二義性使用的。通過虛基類派生出來的新類,同一個成員變量在不同的派生類中都只有一個復制,當通過普通基類派生的新類,同一個成員變量,在不同的派生類中的副本是不一樣的。 25分析以下程序的結(jié)果。程序一、#include class A private: int a, b; pub
30、lic: A(int i, int j) a=i; b=j; void Offset(int x, int y) a+=x; b+=y; void Display() cout(a,b)endl; ;class B:private A private: int x, y; public: B(int i, int j, int k, int l):A(i,j) x=k; y=l; void Display() coutx,yendl; void Move() Offset(3,5); void Show() A:Display(); ;void main() A e(1,2); e.Displ
31、ay(); B d(3,4,5,6); d.Move(); d.Display(); d.Show();運行結(jié)果:程序二、#include class CRoot public: int small; CRoot()small= 2; CRoot(int n) small = n; void showsmall() coutsmall=smallendl; ;class CDer1:public CRoot public: CDer1(int m):CRoot(m) ;class CDer2:public CRoot public: int small; CDer2(int n=0) smal
32、l=n; ;void main() CRoot A; CDer1 B(3); CDer2 C; A.showsmall(); B.showsmall(); C.showsmall(); 運行結(jié)果:26.定義一個人員類CPerson,包括數(shù)據(jù)成員:姓名、編號、性別和用于輸入輸出的成員函數(shù)。在此基礎(chǔ)上派生出學生類CStudent(增加成績)和教師類CTeacher(增加教齡),并實現(xiàn)對學生和教師信息的輸入輸出。#include class CPerson /聲明基類 protected: /基類保護成員 int ID; char name10; char sex; public: CPerson(
33、)cout請輸入以下資料:endl; coutID; coutname; coutsex;coutendl; void output() cout編號:IDendl; cout姓名:nameendl; cout性別:sexendl;class CStudent:public CPerson private:float score;public: CStudent() coutscore; void output() CPerson:output(); cout成績:scoreendl; ; class CTeacher:public CPerson private:int age;public
34、: CTeacher() coutage; void output() CPerson:output(); cout年齡:ageendl; ;void main() CPerson person1; person1.output(); CStudent stu;stu.output(); CTeacher teacher; teacher.output(); 27. 把定義平面直角坐標系上的一個點的類CPoint作為基類,派生出描述一條直線的類CLine,再派生出一個矩形類CRecto要求成員函數(shù)能求出兩點間的距離、矩形的周長和面積 等。設(shè)計一個測試程序,并構(gòu)造完整的程序。#include #
35、include class CPoint /聲明基類 protected: int x0,y0; public: CPoint(int a=0,int b=0) x0=a;y0=b; void output() coutx0=x0endl; couty0=y0endl; ;class CLine:public CPoint private: int x1,y1; public: CLine(int x,int y, int u=0, int v=0):CPoint(x,y) x1=u; y1=v; void output() CPoint:output(); coutx1=x1endl; co
36、uty1=y1endl; double length() return (double)sqrt(x1-x0)*(x1-x0)+(y1-y0)*(y1-y0) ); ; class CRect:public CPoint private: int x1,y1; public: CRect(int x,int y, int u=0, int v=0):CPoint(x,y) x1=u; y1=v; float length() return (float)(2*(x1-x0)+(y1-y0); float area() return (float)(x1-x0)*(y1-y0); ;void m
37、ain() CLine l(1,0,1,1); cout長度=l.length()endl; CRect rect(0,1,4,10); cout周長=rect.length()endl; cout面積=rect.area()endl; 28. 定義一個字符串類CStrOne,包含一個存放字符串的數(shù)據(jù)成員,能夠通過構(gòu)造函數(shù)初始化字符串,通過成員函數(shù)顯示字符串的內(nèi)容。在此基礎(chǔ)上派生出CStrTwo類,增加一個存放字符串的數(shù)據(jù)成員;并能通過派生類的構(gòu)造函數(shù)傳遞參數(shù),初始化兩個字符串,通過成員函數(shù)進行兩個字符串的合并以及輸出。(字符串合并可使用標準庫函數(shù)strcat,需要包含頭 文件string.h
38、)#include #include class CStrOne protected: char *pstr; public: CStrOne( char str ) pstr=str; void show() coutstrings=pstrendl; ;class CStrTwo:public CStrOne char *newpstr; public: CStrTwo( char str1 ,char str2 ):CStrOne(str1) newpstr=str2; void show() coutstrings1=pstrendl; coutstrings2=newpstrendl
39、; void joint() char temp100; strcpy(temp, pstr); newpstr=strcat(temp,newpstr); coutnewpstrendl; ;void main() CStrTwo str(My Name is Lian, 45 years old); str.show(); str.joint(); 23 多態(tài)和虛函數(shù)29什么是多態(tài)性?所謂“多態(tài)性”就是不同對象收到相同的消息時,產(chǎn)生了不同的動作。這里的消息主要是指對類的成員函數(shù)的調(diào)用,因此的函數(shù)重載就是多態(tài)性的表現(xiàn)。30什么是虛函數(shù)?為什么要定義虛函數(shù)?在函數(shù)的聲明時,在函數(shù)名前面加上vi
40、tual就實現(xiàn)了虛函數(shù)的聲明。通過虛函數(shù)和繼承,可以實現(xiàn)運行時的多態(tài)性。即在程序執(zhí)行前,根據(jù)函數(shù)和參數(shù)還無法確定應該調(diào)用哪一個函數(shù),必須在程序的執(zhí)行過程中,根據(jù)執(zhí)行情況動態(tài)地確定。31什么是純虛函數(shù)?什么是抽象類?聲明純虛函數(shù)的一般格式為: virtual 函數(shù)類型 函數(shù)名(形參表)=0; 它與一般虛函數(shù)不同的是:在純虛函數(shù)的形參表后面多了個“=0”。把函數(shù)名賦于0,本質(zhì)上是將指向函數(shù)的指針的初值賦為0,純虛函數(shù)不能有具體的實現(xiàn)代碼。抽象類是指至少包含一個純虛函數(shù)的特殊的類。它本身不能被實例化,也就是說不能聲明一個抽象類的對象。必須通過繼承得到派生類后,在派生類中定義了純虛函數(shù)的具體的實現(xiàn)代碼
41、,才能獲得一個派生類的對象。32分析下列程序的結(jié)果。#include class B public: B() B(int i) b = i; virtual void virfun() coutB:virfun() is called.n; private: int b;class D: public B public: D() D(int i, int j):B(i) d=j; private: int d; void virfun() coutvirfun();void main() D *pd = new D; fun(pd);33定義一個抽象類CShape,包含純虛函數(shù)Area()(用
42、于計算面積)和SetData()(用于重設(shè)形狀大小)。然后派生出三角形CTriangle類、矩形CRect類、圓CCircle類,分別求其面積。最后定義一個CArea類,計算這幾個形狀的面積之和,各形狀的數(shù)據(jù)通過CArea類構(gòu)造函數(shù)或成員函數(shù)來設(shè)置。編寫一個完整的程序。#include class CShape public: virtual float Area()=0; virtual void SetData(float, float)=0;class CTriangle:public CShape private: float l,h; public: void SetData(flo
43、at width=0, float height=0) l=width; h=height; float Area() cout h*l/2n; return (h*l/2); ;class CRect:public CShape private: float w,h; public: void SetData(float width=0, float height=0) w=width; h=height; float Area() cout h*wn; return (h*w); ;class CCircle:public CShape private: float r; public: void SetData(float radius=0,float l=0) r=radius; float Area() cout 2*3.1416*r*rn; return
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡金融客戶關(guān)系管理-洞察分析
- 寫給空乘的表揚信范文
- 單位證明材料接收函(7篇)
- 物聯(lián)網(wǎng)安全防護剖析-洞察分析
- 助學貸款助力職場技能提升項目
- 《工程設(shè)計標準解讀》課件
- 《智能家居系統(tǒng)》課件
- 冰雪產(chǎn)業(yè)商業(yè)開發(fā)策略與實踐
- 創(chuàng)新教學方法在小學課堂的應用
- 辦公環(huán)境中學生綜合素質(zhì)評價的實踐與挑戰(zhàn)
- 2023-2024學年滬教版(上海)七年級數(shù)學上冊 期末復習題
- 2024-2025學年高二上學期期末復習【第五章 一元函數(shù)的導數(shù)及其應用】十一大題型歸納(拔尖篇)(含答案)
- 湖北省咸寧市通城縣2022-2023學年八年級上學期期末質(zhì)量檢測數(shù)學試卷(含解析)
- 3.5畝生態(tài)陵園建設(shè)項目可行性研究報告
- 【MOOC】法理學-西南政法大學 中國大學慕課MOOC答案
- 2024年新湘教版七年級上冊數(shù)學教學課件 第4章 圖形的認識 章末復習
- 2024年民用爆炸物品運輸合同
- 國家開放大學24237丨學前兒童語言教育活動指導(統(tǒng)設(shè)課)期末終考題庫及答案
- 2024-2030年中國離合器制造行業(yè)運行動態(tài)及投資發(fā)展前景預測報告
- 2024年專技人員公需科目考試答
- “源網(wǎng)荷儲”一體化項目(儲能+光伏+風電)規(guī)劃報告
評論
0/150
提交評論