




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、本文檔如對你有幫助,請幫忙下載支持!1.755.A.答:56.指針和引用已知int d=5, *pd=&d, b=3;求下列表達(dá)式的值。*pd*bB. +*pd-b15, 3,5, 6選擇填充。C. *pd+D.+(* pd)(1) 選擇正確的說明語句為()。A. i nt Nb;C. i nt N;答:B(2) 若有定義:A .變量C 變量答:C.(3) 下述程序的輸出結(jié)果是#in clude void mai n()B. i nt N4,9;D. i nt *N10;int a=100 , *p=&a;則 *p 的值是(.變量a的地址值無意義p的地址 B a的值 D.int a5=2,4,
2、6,8,10;int *p=a, *q=&p; cout*( p+), *q;A.答:B(4)下述程序片段的輸出是(int a34=1,2,3,4,5,6,7,8;int X, *p=a0;x=(* p)*(* p+2)*(* p+4);coutxe ndl;A.15 B.14 C.16 D.答:A若有以下定義,則下列對數(shù)組引用正確的是in t (*q)3 = new in t23;A. q23 B. *q C. *(*q+2) D.答:C(6) 若要用如下程序片段使指針變量float *p;p=(float *) new float;則空白處應(yīng)填入:A . float * B . *floa
3、t C(7) 下列表示引用的方法中,()已知:int m=10 ;A. int &x=m; B. int &y= 10;答:A57.分析下列程序的結(jié)果。4,4 B. 2,2 C. 4,2 D. 4,513*(*(q+2)+3)p指向一個(gè)存儲動態(tài)分配的存儲單元:省略; D.( float ) 是正確的。C.i nt &乙D. float &t = &m;#in clude int &fun( int n, i nt s) int &m=s n;return m;void mai n()int s =15,4,3,2,1,0;fun (3, s)=10;coutvvfu n( 3,s)e ndl;
4、答:10輸入3個(gè)實(shí)數(shù),按升序排58. 用指針作為函數(shù)的參數(shù),設(shè)計(jì)一個(gè)實(shí)現(xiàn)兩個(gè)參數(shù)交換的函數(shù)。,int *n , int pos , int x);其功能是將x值插入到指針 a n所指存儲單元中存放的是數(shù)組元素個(gè)數(shù),pos為指定插入位序后輸出。59. 編寫函數(shù) void fun(int *a,其功能是將s所指的字符串逆序存放。例如,abc2345 345fdf678jdhfg945。依次存放到另一個(gè)整型數(shù)組 b中。如將2345存放到bO、 統(tǒng)計(jì)出字符串中的整數(shù)個(gè)數(shù),并輸出這些整數(shù)。要求在設(shè)計(jì)一個(gè)函數(shù),把指向字符串的指針和指向整數(shù)的指針作為所指的一維數(shù)組中,其中指針 置的下標(biāo)。60. 編寫函數(shù) v
5、oid fun(char *s)61輸入一個(gè)字符串,串內(nèi)有數(shù)字和非數(shù)字字符,將其中連續(xù)的數(shù)字作為一個(gè)整數(shù),345 放入 b1、678 放入 b2、主函數(shù)中完成輸入和輸出工作。函數(shù)的參數(shù),并完成從字符串中依次提取出整數(shù)的工作。62.有5個(gè)學(xué)生,每個(gè)學(xué)生的數(shù)據(jù)結(jié)構(gòu)包括學(xué)號、姓名、年齡、C+成績、數(shù)學(xué)成績和英語成績、總平均分,從鍵盤輸入 5個(gè)學(xué)生的學(xué)號、姓名、3門課的成績,計(jì)算3門課的總平均 分,最后將5個(gè)學(xué)生的數(shù)據(jù)輸出。要求各個(gè)功能用函數(shù)來實(shí)現(xiàn)。第2章C+面向?qū)ο蟪绦蛟O(shè)計(jì)2. 1類和對象1. 什么是類?類的定義格式?類的成員一般分為哪兩部分?它們的區(qū)別如何?“類”是對具有共同的屬性特征和行為特征的
6、對象的概括和抽象。類的定義格式:class 類名Private :私有數(shù)據(jù)成員和成員函數(shù)Public :公有數(shù)據(jù)成員和成員函數(shù);類的成員一般分為數(shù)據(jù)成員和成員函數(shù)兩部分。數(shù)據(jù)成員一般用來表示對象屬性特征,而成員函數(shù)一般表示了對象的可以進(jìn)行的操作,行為特征。2. 類與結(jié)構(gòu)體有什么區(qū)別?類中可以包含兩類成員一一數(shù)據(jù)成員和成員函數(shù);而標(biāo)準(zhǔn)C語言中的結(jié)構(gòu)體只能包含數(shù)據(jù)成員;但是C+中的結(jié)構(gòu)體對 C語言中的結(jié)構(gòu)體有擴(kuò)展, C+中的結(jié)構(gòu)體也可以兩類成員一一 數(shù)據(jù)成員和成員函數(shù);因此 C+中的類和 C+中的結(jié)構(gòu)體出來在定義方式上不一樣之外(class,struct),還有就是它們的缺省封裝字是不一樣的,一個(gè)
7、是private ,一個(gè)是public 。3. 什么是對象?如何定義一個(gè)對象?對象的成員如何表示?對象是類的實(shí)例,是類的變量。 對象的定義:類名對象名稱;或:類名*對象指針;對象成員的表示:對象名稱 .成員名字;或:對象指針7成員名字; 4什么是構(gòu)造函數(shù)?構(gòu)造函數(shù)有哪些特點(diǎn)? 構(gòu)造函數(shù)是類的成員函數(shù),它有以下特點(diǎn):構(gòu)造函數(shù)的名字必須與類名相同。構(gòu)造函數(shù)可以有任意的形參,但不能具有返回值。 定義對象時(shí),編譯系統(tǒng)會自動地調(diào)用構(gòu)造函數(shù)。 構(gòu)造函數(shù)可以重載5什么是析構(gòu)函數(shù)?析構(gòu)函數(shù)有哪些特點(diǎn)?析構(gòu)函數(shù)也是類的成員函數(shù),它有以下特點(diǎn):析構(gòu)函數(shù)名也應(yīng)與類名相同,只是在函數(shù)名前面加一個(gè)波浪符。 析構(gòu)函數(shù)不能
8、帶任何參數(shù),也沒有返回值。每個(gè)類有而且只能有一個(gè)析構(gòu)函數(shù)。析構(gòu)函數(shù)不能重載。6什么是默認(rèn)構(gòu)造函數(shù)和默認(rèn)析構(gòu)函數(shù)?假如用戶沒有自己編寫構(gòu)造函數(shù)或析構(gòu)函數(shù),編譯系統(tǒng)也會自動生成一個(gè)構(gòu)造函數(shù)和析構(gòu)函數(shù),這就是默認(rèn)的構(gòu)造函數(shù)和析構(gòu)函數(shù),但是這兩個(gè)函數(shù)沒有任何參數(shù),也不進(jìn)行任何操作。它用來在已存在的對象基礎(chǔ)上建立一個(gè)新對象。 但是它的形式參數(shù),都是指向一個(gè)已經(jīng)存在“ con st類名&ob”,即是一個(gè)對象的引用。7什么是復(fù)制構(gòu)造函數(shù) ?它的功能和特點(diǎn)是什么 ?復(fù)制構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù), 復(fù)制構(gòu)造函數(shù)的名稱也和類名是一樣的, 的對象,因此它的形式參數(shù)都是這種形式: &什么是靜態(tài)成員?靜態(tài)成員的作用
9、是什么 9如何對對象進(jìn)行初始化 ?只要在聲明對象時(shí), 逐個(gè)添好構(gòu)造函數(shù)的實(shí)參。對象的初始化都是通過構(gòu)造函數(shù)進(jìn)行的,10什么是友元?它的作用有哪些?什么是友元函數(shù)和友元類 ? 11什么是this指針?它有何作用?一個(gè)類可以同時(shí)有很多對象存在, 許多不同的對象可以調(diào)用相同的成員函數(shù),編譯系統(tǒng)為了知道當(dāng)前是那個(gè)對象在調(diào)用成員函數(shù),因此定義了this指針,this指針其實(shí)就是指向當(dāng)前對象的指針。12什么是類的作用域?對象的生存期有何不同?類的作用域簡稱類域,它是指在類的定義中由一對花括號所括起來的部分,每一個(gè)類都具有相應(yīng)的類域。 類域中定義的變量不能使用 auto , register和extern等
10、修飾符,只能用 static 修飾符,函數(shù)也不能用 extern修飾符。按生存期的不同對象可所謂對象的生存期是指對象從被創(chuàng)建開始到被釋放為止的時(shí)間, 分為如下三種:1、局部對象:當(dāng)對象被定義時(shí)調(diào)用構(gòu)造函數(shù),該對象被創(chuàng)建,當(dāng)程序退出定義該對象 所在的函數(shù)體或程序塊時(shí),調(diào)用析構(gòu)函數(shù),釋放該對象。當(dāng)程序結(jié)束時(shí),2、靜態(tài)對象:當(dāng)程序第一次執(zhí)行所定義的靜態(tài)對象時(shí),該對象被創(chuàng)建, 該對象被釋放。3、全局對象:當(dāng)程序開始時(shí),調(diào)用構(gòu)造函數(shù)創(chuàng)建該對象,當(dāng)程序結(jié)束時(shí)調(diào)用析構(gòu)函數(shù) 釋放該對象。13. 分析下列程序的運(yùn)行結(jié)果。程序1:#in elude #in elude class CCoun terprivate
11、:double m_value;public:void SetValue(double v) m_value=v;double GetValue();int GetNum();double CCou nter:GetValue()return si n(10.0*m_value);int CCou nter: GetNum() return (in t)m_value; void mai n()CCoun ter sam;sam.SetValue(50.0);coutThe value is: sam.GetValue()e ndl; coutThe num is: sam.GetNum()e
12、 ndl;程序2:#in clude #in clude class personint age;char n ame10;p ublic:void in it(i nt i, char *str) age = i; strc py(n ame, str); void dis play() eout n ame is age years old;void mai n() person demo;demo.i nit(30, LiMi ng);demo.dis play();程序3:#in elude #in elude class person int age;char *n ame;publ
13、ic:void in it(i nt i, char *str)int j;j=strle n(str)+1;n ame=new charj;strc py(n ame, str);age = i;person() delete n ame;coutdestructor is called.;void dis play() cout n ame is age years oldn; ;void mai n() person demo;demo.i nit(30, LiMi ng);demo.dis play();程序4:#in clude class CSamp ublic:static in
14、t m;CSam() m+; CSam( int n ) m = n; static void testm() m+; ;int CSam:m =0;void mai n()CSam A;CSam B(3);A.testm();CSam:testm();coutm = B.me ndl;14. 定義一個(gè)描述學(xué)生基本情況的類,數(shù)據(jù)成員包括姓名、學(xué)號、C+、英語和數(shù)學(xué)成績,成員函數(shù)包括輸出數(shù)據(jù)、置姓名和學(xué)號、置 3門課的成績,求出總成績和平均成績。#in clude #in clude class CStude ntinfochar stu_ name20;char stu_id10;float
15、C_score;float E_score;float M_score;public:CStude ntl nfo(char *n ame, char *id)strc py(stu _n ame, name);strcpy(stu_id,id);C_score=E_score=M_score=0.00;void In it(float score1, float score2,float score3)C_score=score1;E_score=score2;M_score=score3;float GetTotal()return (C_score+E_score+M_score);fl
16、oat GetAvg()return (C_score+E_score+M_score)/3;void Dis play()Mathmetics:coutName:stu_ name ID:stu_ide ndl;En glish:E_scorecoutC Language:C scoreM_scoree ndl;is:GetTotal()AveragecoutTotalis:GetAvg()e ndl;;void mai n() CStude ntinfo stu(a ndrew,);float score1,score2,score3;cout score1;cout score2;cou
17、t score3;stu.ln it(score1,score2,score3);stu.Dis play();15. 設(shè)有一個(gè)描述坐標(biāo)點(diǎn)的 CPoint類,其私有變量x和y代表一個(gè)點(diǎn)的x、y坐標(biāo)值。編寫 程序?qū)崿F(xiàn)以下功能:利用構(gòu)造函數(shù)傳遞參數(shù),并設(shè)其默認(rèn)參數(shù)值為60和75,利用成員函數(shù)display()輸出這一默認(rèn)的值;利用公有成員函數(shù)setpoint() 將坐標(biāo)值修改為(80 , 150),并利用成員函數(shù)輸出修改后的坐標(biāo)值。16. 以下是一個(gè)類的測試程序,給出類的定義,構(gòu)造一個(gè)完整的程序。執(zhí)行程序時(shí)的輸出如下。輸出結(jié)果:200-60=140主函數(shù)為:void mai n()CTest c;
18、c.in it(200, 60);c.prin t();CTest類的構(gòu)造如下:#in clude class CTestint x,y;public:void in it(i nt x0,i nt y0)x=x0;y=y0;void prin t()cout200-60=x-ye ndl;17. 設(shè)有一個(gè)類,其定義如下:#in clude class CSa mp lechar*p1,*p2;public:void in it(char *s1, char *s2);void prin t() cout p1 = p 1n p2 = p2n; void copy (CSa mple &on
19、e);void free(); ;p1和p2所指向的動態(tài)申請的free()函數(shù)釋放3個(gè)函數(shù)的定義成員函數(shù)init()是將s1和s2所指向的字符串分別送到內(nèi)存空間中,函數(shù) copy將對象one中的兩個(gè)字符串復(fù)制到當(dāng)前的對象中, p1和p2所指向的動態(tài)分配的內(nèi)存空間。設(shè)計(jì)一個(gè)完整的程序,包括完成這 和測試工作。#in clude #in elude class CSa mp lechar*p1,*p2;public:void in it(char *s1, char *s2);void prin t()cout p1 = p 1n p2 = p2 p1;delete this- p2;void m
20、ai n()CSa mp le a,b;a.i nit(My name is ,a ndrew);a. prin t();b. co py(a);b.prin t();a.free();本程序的設(shè)計(jì)是有問題的,最好是把new分配內(nèi)存寫在構(gòu)造函數(shù)中!如此無法進(jìn)行b.freeO!因?yàn)閷ο骲沒有用new分配內(nèi)存,因此不可以用delete運(yùn)算符。18. 設(shè)有一個(gè)類,其定義如下:#in clude 整型數(shù)組的大小整型數(shù)組中實(shí)際存放的元素個(gè)數(shù)浮點(diǎn)數(shù)組的大小浮點(diǎn)數(shù)組中實(shí)際存放的元素個(gè)數(shù) 指向整型數(shù)組,動態(tài)分配內(nèi)存空間 指向浮點(diǎn)數(shù)組,動態(tài)分配內(nèi)存空間class CArray int nSizeOfI nt;
21、/int nNumOfI nt;int nSizeOfFloat;int nNu mOfFloat;/int *plnt; /float *p Float;public:將n加入到整型數(shù)組中將x加入到浮點(diǎn)數(shù)組中取整型數(shù)組中第index個(gè)元素,index從0開始取浮點(diǎn)數(shù)組中第index個(gè)元素,index從0開始析構(gòu)函數(shù),釋放動態(tài)分配的內(nèi)存空間分別輸出整型數(shù)組和浮點(diǎn)數(shù)組中的所有元素nin tSize和CArray(i nt nIn tSize=100, i nt nFloatSize=200);void pu t( int n);/void put(float x);/int getI nt(i
22、nt in dex);/float getFloat(i nt in dex); /CArray();/void prin t();/;構(gòu)造完整的程序,包括類成員函數(shù)的定義和測試程序的設(shè)計(jì)。構(gòu)造函數(shù)中的nFloatSize分別表示整型數(shù)組和浮點(diǎn)數(shù)組的大小。CArray:CArray(i nt nin tSize, i nt n FloatSize)n SizeOfI nt=nln tSize;plnt=new intn SizeOfI nt;n SizeOfFloat=nFloatSize;p Float =new float n SizeOfFloat;nNumOfIn t=0; nNum
23、OfFloat=0;void CArray: pu t(i nt n)plntnNu mOfI nt+=n;void CArray: pu t(float x) p Float nNu mOfFloat+=x;int CArray:get In t(i nt in dex)if (in dex=0 & in dex=0 & in dex=nNum OfFloat) retur n pF loat in dex;CArray:CArray()delete pFloat;delete pint;void CArray: prin t()for( int i=0;i nNu mOfI nt;i+)c
24、out pin ti;coutn:for( int j=O;j nNumOfFloat;j+)cout p Floatj;coutn:void mai n() int a=10;float x=10.5;CArray MyArray(10,15);MyArray. put(a);MyArray. put(x);MyArray. put(a+1);MyArray. put(x+1);MyArray. put(a+2);MyArray. pu t(x+2);MyArray. prin t();19. 在一個(gè)程序中,實(shí)現(xiàn)如下要求:(1) 構(gòu)造函數(shù)重載;(2) 成員函數(shù)設(shè)置默認(rèn)參數(shù);(5)使用不同的構(gòu)
25、造函數(shù)創(chuàng)建不同的對象。#in clude#in cludeclass studprivate:int num;char n ame10;char sex;p ublic:stud() num=10010;strc py(n ame,Wa ng Li);sex=F;stud(i nt n ,char n am ,char s ) num=n;strc py(n ame, n am);sex=s;void dis play() cout nu m: num e ndl; cout n ame: n amee ndl; coutsex:sexe ndl;void mai n() stud studi
26、;studl.dis play();stud stud2(10011,Zha ng fun ”,m);stud2.dis play();2. 2繼承和派生類20. 派生類是如何定義的?它有哪些特點(diǎn)?定義派生類的一般形式為:class派生類名:引用權(quán)限基類名 派生類新增的數(shù)據(jù)成員派生類新增的成員函數(shù);派生類繼承了基類的所有數(shù)據(jù)成員和成員函數(shù),并增加新的成員。21. 派生類的繼承方式有哪些?它們各有哪些特點(diǎn)?這是繼承技術(shù)中比較關(guān)鍵的問題。從基類繼承來的成員的引用,不是簡單地把基類的私有成員和公用成員直接作為派生類的私有成員和公用成員來使用,而要根據(jù)基類成員的“封裝權(quán)限”和派生類聲明的“引用權(quán)限”共
27、同決定。 當(dāng)引用權(quán)限為 public時(shí),稱為“公用派生類”。在公用派生類中,基類的 public成員和protected 成員仍然成為派生類中的public成員和protected 成員;然而基類中的私有成員卻成為了派生類中的“不可訪問的成員”,不能被派生類使用。 當(dāng)引用權(quán)限為private 時(shí),稱為“私有派生類”。在私有派生類中,基類的公用成員和保 護(hù)成員成為了派生類中的私有成員,基類的私有成員成為派生類“不可訪問的成員”。 從以上兩點(diǎn)可以看出,基類中的私有成員在派生類中都成為了 “不可訪問的成員”。因此在繼承中經(jīng)常使用另外一種封裝字 protected ,被protected封裝的成員稱為
28、“保護(hù)成員”,保護(hù)成員和私有成員相似,不能被外界引用,但它卻可以被派生類的成員函數(shù)引用。22. 在定義派生類的過程中,如何對基類的數(shù)據(jù)成員進(jìn)行初始化?基類的數(shù)據(jù)成員初始化往往是通過基類的構(gòu)造函數(shù)進(jìn)行的,但是在么在建立派生類的對象時(shí),是不會自動執(zhí)行基類的構(gòu)造函數(shù),因而就會使基類中成員變量未初始化。所以在設(shè)計(jì)派生類的構(gòu)造函數(shù)時(shí),不僅要考慮派生類所增加的成員變量初始化,還應(yīng)當(dāng)考慮基類的成員變量初始化。在執(zhí)行派生類的構(gòu)造函數(shù)時(shí),應(yīng)當(dāng)調(diào)用基類的構(gòu)造函數(shù)。因此考慮到基類成員變量初始化后,派生類的構(gòu)造函數(shù)一般形式為:派生類構(gòu)造函數(shù)名(參數(shù)表):基類構(gòu)造函數(shù)名(參數(shù)表)例如:stude nt(i nt n,
29、char n am,char s,i nt a,char ad ):stud( n,n am,s)其中,student類是stud的派生類。23 在派生類中能否直接訪問基類中的私有成員?在派生類中如何實(shí)現(xiàn)訪問基類中的私有成要在派生類中訪問基類中的私有成 封裝的成員函數(shù)進(jìn)行。員?在派生類中是不能直接訪問基類中的私有成員的,員,只能通過基類所提供的Public或protected24. 什么是虛基類?它的作用如何?virtual ,就將基類聲明成了虛基類,即:在聲明派生類時(shí),在基類的引用權(quán)限前面加上class 派生類名:virtual 引用權(quán)限基類名虛基類的引入主要是針對多重派生的,是為了消除派生
30、類的二義性使用的。通過虛基類派生出來的新類,同一個(gè)成員變量在不同的派生類中都只有一個(gè)復(fù)制,當(dāng)通過普通基類派生的新類,同一個(gè)成員變量,在不同的派生類中的副本是不一樣的。25. 分析以下程序的結(jié)果。程序一、#in clude class A p rivate:int a, b;public:A(int i, i nt j)a=i; b=j;void Offset。nt x, i nt y) a+=x; b+=y; void Dis play() cout(a,b)e ndl; ;class B:p rivate Ap rivate:int x, y;public:B(i nt i, i nt j,
31、 i nt k, i nt l):A(i,j) x=k; y=l; void Dis play() coutx,ye ndl;void Move() Offset(3,5); void Show() A:Dis play(); ;void mai n() A e(1,2);e.Dis play();B d(3,4,5,6);d.Move();d.Dis play();d.Show();運(yùn)行結(jié)果:程序二、#in clude class CRootpublic:int small;CRoot()small= 2; CRoot(i nt n) small = n;void showsmall() c
32、outsmall=smalle ndl; ;class CDer1: public CRootpublic:CDer1(i nt m):CRoot(m) ;class CDer2: public CRootp ublic:int small;CDer2(i nt n=0) small=n; ;void mai n() CRoot A;CDer1 B(3);CDer2 C;A.showsmall(); B.showsmall(); C.showsmall();運(yùn)行結(jié)果:26. 定義一個(gè)人員類 CPerson,包括數(shù)據(jù)成員:姓名、編號、性別和用于輸入/輸出的成員 函數(shù)。在此基礎(chǔ)上派生出學(xué)生類CSt
33、udent(增加成績)和教師類CTeacher(增加教齡),并實(shí)現(xiàn)對學(xué)生和教師信息的輸入/輸出。聲明基類基類保護(hù)成員#in clude class CPerson / p rotected: /int ID;char n ame10;char sex;p ublic:CP erso n()cout請輸入以下資料:endl;coutID;coutn ame;cout sex;coute ndl; void out pu t()編號:IDendl; 姓名:nameendl; 性別:sexendl;coutcoutcout;class CStude nt: public CPersonprivate
34、:float score;public:CStude nt() cout score;void out pu t() CP erso n:out put();cout 成績:scoreendl;;class CTeacher: public CPersonp rivate:int age;public:CTeacher() cout age;void out pu t() CP erso n:out put();cout 年齡:ageendl;void mai n() CPerson person1;person 1.out pu t();CStude nt stu;stu.out put()
35、;CTeacher teacher;teacher.out pu t();CPoint作為基類,派生出描述一條直線的類矩形的周長和面積27. 把定義平面直角坐標(biāo)系上的一個(gè)點(diǎn)的類CLine,再派生出一個(gè)矩形類CRecto要求成員函數(shù)能求出兩點(diǎn)間的距離、等。設(shè)計(jì)一個(gè)測試程序,并構(gòu)造完整的程序。#in clude #in clude class CPoint /聲明基類 P rotected:int xO,yO;p ublic:CPoin t(i nt a=0,i nt b=0) xO=a; yO=b;void out pu t()coutx0=x0e ndl; couty0=y0e ndl;cla
36、ss CLi ne: public CP oi ntprivate:int x1,y1;public:CLin e(i nt x,i nt y, i nt u=0, i nt v=O):C Poi nt(x,y) x1=u;y1=v;void out pu t() CP oi nt:out put();coutx1=x1e ndl;couty1=y1e ndl;double len gth()return (double)sqrt(x1-x0)*(x1-x0)+(y1-y0)*(y1-y0);class CRect: public CPointprivate:int x1,y1;public:
37、CRect(i nt x,i nt y, i nt u=0, i nt v=0):C Poi nt(x,y) x1=u;y1=v; float len gth()return (float)(2*(x1-x0)+(y1-y0);float area()return (float)(x1-x0)*(y1-y0);void mai n()CLi ne l(1,0,1,1);cout長度=l.le ngth()e ndl;CRect rect(0,1,4,10);cout周長=rect.len gth()e ndl;cout面積=rect.area()e ndl;28. 定義一個(gè)字符串類 CStrO
38、ne,包含一個(gè)存放字符串的數(shù)據(jù)成員,能夠通過構(gòu)造函數(shù)初始 化字符串,通過成員函數(shù)顯示字符串的內(nèi)容。在此基礎(chǔ)上派生出CStrTwo類,增加一個(gè)存放字符串的數(shù)據(jù)成員;并能通過派生類的構(gòu)造函數(shù)傳遞參數(shù),初始化兩個(gè)字符串,通過成員函數(shù)進(jìn)行兩個(gè)字符串的合并以及輸出。(字符串合并可使用標(biāo)準(zhǔn)庫函數(shù)strcat ,需要包含頭文件 string.h)#in elude #in elude class CStrO ne p roteeted:char *p str;p ublic:CStrO ne( char str) p str=str;void show() coutstri ngs= p stre ndl;
39、;class CStrTwo: public CStrO nechar *newp str;p ublic:CStrTwo( char str1 ,char str2 ):CStrO ne(str1) newp str=str2;void show() coutstri ngs仁p stre ndl;coutstri ngs2= newp stre ndl;void joi nt() char tem p100;strc py (te mp, p str);newp str=strcat(te mp,newp str);cout newp stre ndl;void mai n()CStrTw
40、o str(My Name is Lia n, 45 years old);str.show();str.joi nt();2. 3 多態(tài)和虛函數(shù)29.什么是多態(tài)性?所謂“多態(tài)性”就是不同對象收到相同的消息時(shí),產(chǎn)生了不同的動作。這里的消息主要是指對類的成員函數(shù)的調(diào)用,因此的函數(shù)重載就是多態(tài)性的表現(xiàn)。30什么是虛函數(shù)?為什么要定義虛函數(shù)?在函數(shù)的聲明時(shí),在函數(shù)名前面加上vitual就實(shí)現(xiàn)了虛函數(shù)的聲明。通過虛函數(shù)和繼承,可以實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性。即在程序執(zhí)行前,根據(jù)函數(shù)和參數(shù)還無法確定應(yīng)該調(diào)用哪一 本文檔如對你有幫助,請幫忙下載支持!個(gè)函數(shù),必須在程序的執(zhí)行過程中,根據(jù)執(zhí)行情況動態(tài)地確定。31.
41、什么是純虛函數(shù)?什么是抽象類?聲明純虛函數(shù)的一般格式為:virtual函數(shù)類型 函數(shù)名(形參表)=0 ;它與一般虛函數(shù)不同的是:在純虛函數(shù)的形參表后面多了個(gè)“=0”。把函數(shù)名賦于本質(zhì)上是將指向函數(shù)的指針的初值賦為0,純虛函數(shù)不能有具體的實(shí)現(xiàn)代碼。抽象類是指至少包含一個(gè)純虛函數(shù)的特殊的類。它本身不能被實(shí)例化,也就是說不能聲明一個(gè)抽象類的對象。必須通過繼承得到派生類后,在派生類中定義了純虛函數(shù)的具體的 實(shí)現(xiàn)代碼,才能獲得一個(gè)派生類的對象。32. 分析下列程序的結(jié)果。#in elude class B p ublic:B() B(i nt i) b = i;virtual void vifun()
42、coutB:virfu n() is called. n;private:int b;;class D: p ublic Bp ublic:D()D(i nt i, i nt j):B(i)d=j;p rivate:int d;void vifun() coutvirfu n();void mai n()D *pd = new D;fun(p d);33. 定義一個(gè)抽象類CShape,包含純虛函數(shù)Area()(用于計(jì)算面積)和SetData()(用于重設(shè)形狀大小)。然后派生出三角形CTriangle類、矩形CRect類、圓CCircle類,分別求其面積。最后定義一個(gè) CArea類,計(jì)算這幾個(gè)形
43、狀的面積之和,各形狀的數(shù)據(jù)通過CArea類構(gòu)造函數(shù)或成員函數(shù)來設(shè)置。編寫一個(gè)完整的程序。#in cludeclass CSha pepublic:virtual float Area()=0;virtual void SetData(float, float)=0;class CTria ngle:p ublic CSha pep rivate:float l,h;p ublic:void SetData(float width=0, float height=0) l=width; h=height; float Area() cout h*l/2n;return (h*l/2);class
44、 CRect:p ublic CSha pep rivate:float w,h;p ublic:void SetData(float width=0, float height=0) w=width; h=height; float Area() cout h*wn;return (h*w);class CCircle:p ublic CSha peP rivate:float r;public:void SetData(float radius=0,float 1=0) r=radius; float Area() cout 2*3.1416*r*rn;return (float)2*3.
45、1416*r*r; 4運(yùn)算符重載;2.34.運(yùn)算符重載的含義是什么?是否所有的運(yùn)算符都可以重載運(yùn)算符重載也是實(shí)現(xiàn)靜態(tài)多態(tài)性的一種方法,可以使操作的含義更加清晰。在C+中,就不能重載。第3章MFC基本應(yīng)用程序的建立1. Windows的應(yīng)用程序特點(diǎn)有哪些 ?參考書(P143-145)2. MFC的AppWizard(exe)提供了哪幾種類型的應(yīng)用程序?使用MF啲AppWizard可以創(chuàng)建下面三種類型的應(yīng)用程序:單文檔界面的應(yīng)用程序 (SDI,si ngle docume nt in terface) 多文檔界面的應(yīng)用程序 (MDI, multi pie docume nts in terface
46、) 基于對話框的應(yīng)用程序 (dialog based)大多數(shù)系統(tǒng)預(yù)定義的運(yùn)算符都能被重載,但是并不是所有的運(yùn)算符都可以重載的,比如:(1)(2)(3)3. MFC有哪些機(jī)制?這些機(jī)制有什么用 ?4. 用AppWizard創(chuàng)建一個(gè)多文檔應(yīng)用程序項(xiàng)目(MDI)Ex_MDIHello,比較 MDI與SDI有哪些 區(qū)別?SDI應(yīng)用程序由應(yīng)用程序類 (CWinApp)、框架窗口類(CFrameWnd)文檔類(CDocument)、 視圖類(CView)和文檔模板類(CSinSleDocTemplate)共同作用。MD應(yīng)用程序與SDI應(yīng)用程序 的主要差別在于:MD有CMDIFrameWn和CMDIChil
47、dWnd兩個(gè)框架窗口類,前一個(gè)派生CMainFrame類,負(fù)責(zé)菜單等界面元素的主框架窗口管理;后一個(gè)派生CChildFrame類,負(fù)責(zé)相應(yīng)的文檔及其視圖的子框架窗口維護(hù)。而 SDI由框架窗口類CFrameWn派生CMainFrame類。5消息的類別有哪些 ?用Classwizard如何映射消息?窗口消息:窗口消息一般與創(chuàng)建窗口、繪制窗口、移動窗口和銷毀窗口等操作相關(guān)。窗口消息的形式為 WM_*,其中*的內(nèi)容與每個(gè)窗口消息的內(nèi)容有關(guān)。窗口消息只能被窗口或窗 口對象處理,在 MFC應(yīng)用程序中,CView和CFrame及它們的派生類,以及自定義窗口類型 都能處理窗口消息。在MFC應(yīng)用CView、CF
48、rame 而命令消息:命令消息一般與處理用戶的某個(gè)請求或執(zhí)行用戶的某個(gè)命令相關(guān)。 中,凡是從基類 CCmdTarget派生的類都能處理命令消息,不僅窗口類且文檔類、應(yīng)用程序類都可處理命令消息。一般通過選擇菜單項(xiàng)、單擊工具欄按鈕、按加速鍵可產(chǎn)生命令消息。如改變文本框控件窗口的內(nèi)容時(shí),也有一個(gè)控件消息:控件消息與控件窗口中某個(gè)事件的發(fā)生相關(guān)。有一個(gè)通知窗口內(nèi)容發(fā)生變化的控件事件產(chǎn)生。當(dāng)選擇列表框控件的某個(gè)選項(xiàng)時(shí),通知選項(xiàng)發(fā)生改變的控件事件發(fā)生。6.如何通過 Classwizard 添加一個(gè)類?第4章對話框及常用控件1. 什么是對話框?它分為哪兩類?這兩類對話框有哪些不同 ?對話框是對話框與控件是密不可分對話框是CDialog類的派生類,它的主要功能是輸出信息和接收用戶的輸入。一個(gè)特殊類型的窗口,任何對窗口的操作都可以在對話框中進(jìn)行。的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 豬肉收儲知識培訓(xùn)課件
- 人教版(2024)七年級英語下冊Unit 7 學(xué)情調(diào)研測試卷(含答案)
- 鋼結(jié)構(gòu)切割施工方案
- 2025年中考物理二輪復(fù)習(xí):電磁學(xué)實(shí)驗(yàn)題 能力提升練習(xí)題(含答案)
- 合同范本融資租賃合同
- 課題2 原子結(jié)構(gòu)(第2課時(shí))(教學(xué)設(shè)計(jì))九年級化學(xué)上冊同步高效課堂(人教版2024)
- 如何評估品牌傳播的效果與影響計(jì)劃
- 提升產(chǎn)品質(zhì)量的改進(jìn)措施計(jì)劃
- 學(xué)期目標(biāo)與教學(xué)任務(wù)分解計(jì)劃
- 實(shí)施素質(zhì)教育的年度工作要點(diǎn)計(jì)劃
- 韓愈簡介完整
- 精細(xì)化學(xué)品化學(xué)(第三版)課件全套 第1-12章 緒論、表面活性劑- 農(nóng)藥化學(xué)品
- 馬工程版《中國經(jīng)濟(jì)史》各章思考題答題要點(diǎn)及詳解
- 《學(xué)前兒童科學(xué)教育》第二章 幼兒科學(xué)教育的目標(biāo)與內(nèi)容課件
- 馬克思主義與社會科學(xué)方法論習(xí)題與答案
- 建信融通數(shù)字證書使用承諾函范本
- 印花烘干機(jī)操作規(guī)程
- 部編版小學(xué)四年級語文下冊同步練習(xí)試題及答案(全冊)
- 學(xué)校維修改造工程投標(biāo)方案(完整技術(shù)標(biāo))
- (完整word版)中小企業(yè)劃型標(biāo)準(zhǔn)一覽表
- 非暴力溝通(完整版)
評論
0/150
提交評論