版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、c+類(lèi)與對(duì)象習(xí)題答案1 概念填空題1.1 類(lèi)定義的關(guān)鍵字是 class 。類(lèi)的數(shù)據(jù)成員通常指定為 私有 成員。類(lèi)的函數(shù)成員通常指定為 公有 成員,指定為 公有 的類(lèi)成員可以在類(lèi)對(duì)象所在域中的任何位置訪問(wèn)它們,類(lèi)的 私有和保護(hù) 只能被該類(lèi)的成員函數(shù)或友元函數(shù)訪問(wèn)。1.2類(lèi)的訪問(wèn)限定符包括 public、 private 和 protected 。類(lèi)成員默認(rèn)的訪問(wèn)方式是 private 。訪問(wèn)限定符在類(lèi)中 無(wú) 先后次序,各限定符 允許 (允許/不允許)多次出現(xiàn)。1.3 構(gòu)造函數(shù)的任務(wù)是 建立對(duì)象 。類(lèi)中可以有 多 個(gè)構(gòu)造函數(shù),它們由 參數(shù) 區(qū)分。如果類(lèi)說(shuō)明中沒(méi)有給出構(gòu)造函數(shù),則C+編譯器會(huì)提供構(gòu)造
2、函數(shù),該函數(shù) 不完成 (完成/不完成)對(duì)象初始化工作。1.4復(fù)制構(gòu)造函數(shù)的參數(shù)是 對(duì)象的復(fù)制 ,當(dāng)程序沒(méi)有給出復(fù)制構(gòu)造函數(shù)時(shí),編譯系統(tǒng)會(huì)提供 默認(rèn)復(fù)制構(gòu)造函數(shù) ,完成類(lèi)對(duì)象的 復(fù)制 。復(fù)制構(gòu)造函數(shù)被調(diào)用情況有 3 種。1.5析構(gòu)函數(shù)在對(duì)象 釋放 時(shí)被自動(dòng)調(diào)用。類(lèi)中沒(méi)有定義析構(gòu)函數(shù)時(shí),編譯系統(tǒng)會(huì)提供一個(gè)默認(rèn)的析構(gòu)函數(shù)。該函數(shù) 不完成 (完成/不完成)具體對(duì)象的清理工作。2. 簡(jiǎn)答題2.1 為什么說(shuō)類(lèi)與對(duì)象的概念是客觀世界的反映?2.2 簡(jiǎn)單解釋什么是面向?qū)ο蟪绦蛟O(shè)計(jì)的封裝性。2.3 引用作為函數(shù)參數(shù)時(shí)為什么能實(shí)現(xiàn)兩個(gè)實(shí)參之間的數(shù)據(jù)交換?為什么對(duì)應(yīng)實(shí)參不能為引用?為什么返回值為引用的函數(shù)可以作為左
3、值?2.4 什么是默認(rèn)的構(gòu)造函數(shù)?默認(rèn)的構(gòu)造函數(shù)可以有多少個(gè)?2.5 復(fù)制構(gòu)造函數(shù)用于哪3個(gè)方面?2.6 為什么在友元函數(shù)的函數(shù)體內(nèi)訪問(wèn)對(duì)象成員時(shí),必須用對(duì)象名加運(yùn)算符”.”再加對(duì)象成員名?2.7 類(lèi)的靜態(tài)數(shù)據(jù)成員與函數(shù)中的靜態(tài)成員有何異同?2.8 類(lèi)的成員函數(shù)在什么情況下應(yīng)該定義為私有的?這樣做的目的是什么?2.9 友元關(guān)系有何性質(zhì)?友元關(guān)系的優(yōu)點(diǎn)和缺點(diǎn)各有哪些?3.選擇題3.1 數(shù)據(jù)封裝就是將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)操作組裝在一起,形成一個(gè)實(shí)體,這實(shí)體也就是( B )。A類(lèi) B對(duì)象 C函數(shù)體 D數(shù)據(jù)塊3.2 類(lèi)的實(shí)例化是指( B )。A定義類(lèi)B創(chuàng)建類(lèi)的對(duì)象C指明具體類(lèi)D調(diào)用類(lèi)的成員3.3下
4、列說(shuō)法中正確的是( B )。A類(lèi)定義中只能說(shuō)明函數(shù)成員的函數(shù)頭,不能定義函數(shù)體 B類(lèi)中的函數(shù)成員可以在類(lèi)體中定義,也可以在類(lèi)體之外定義 C類(lèi)中的函數(shù)成員在類(lèi)體之外定義時(shí)必須要與類(lèi)聲明在同一文件中 D在類(lèi)體之外定義的函數(shù)成員不能操作該類(lèi)的私有數(shù)據(jù)成員3.4有如下類(lèi)定義:class sample int n;public:sample (int i=0):n(i) void setValue(int n0);;下列關(guān)于setValue成員函數(shù)的實(shí)現(xiàn)中,正確的是( B )。Asample:setValue(int n0)n=n0;Bvoid sample:setValue(int n0)n=n0;C
5、void setValue(int n0)n=n0;DsetValue(int n0)n=n0;3.5在下面的類(lèi)定義中,錯(cuò)誤的語(yǔ)句是( C )。class sample public: sample(int val);/ sample( ); / private:int a=2.5; / public:sample( ); /; ABCD3.6類(lèi)的構(gòu)造函數(shù)被自動(dòng)調(diào)用執(zhí)行的情況是在創(chuàng)建該類(lèi)的(C)。 A成員函數(shù)時(shí) B數(shù)據(jù)成員時(shí) C對(duì)象時(shí) D友元函數(shù)時(shí)3.7(A)是析構(gòu)函數(shù)的特征。 A一個(gè)類(lèi)中只能定義一個(gè)析構(gòu)函數(shù) B析構(gòu)函數(shù)名與類(lèi)名不同 C析構(gòu)函數(shù)的定義只能在類(lèi)體內(nèi) D析構(gòu)函數(shù)可以有一個(gè)或多個(gè)參數(shù)
6、3.8 在下列函數(shù)原型中,可以作為類(lèi)AA構(gòu)造函數(shù)的是( D )。 Avoid AA(int); Bint AA( ); CAA(int) const; DAA(int)3.9關(guān)于成員函數(shù)特征的下述描述中,(A)是錯(cuò)誤的。 A成員函數(shù)一定是內(nèi)聯(lián)函數(shù) B成員函數(shù)可以重載 C成員函數(shù)可以設(shè)置參數(shù)的默認(rèn)值 D成員函數(shù)可以是靜態(tài)的3.10不屬于成員函數(shù)的是(B )。 A靜態(tài)成員函數(shù) B友元函數(shù) C構(gòu)造函數(shù) D析構(gòu)函數(shù)3.11已知類(lèi)A是類(lèi)B的友元,類(lèi)B是類(lèi)C的友元,則(C )。 A類(lèi)A一定是類(lèi)C的友元 B類(lèi)C一定是類(lèi)A的友元 C類(lèi)C的成員函數(shù)可以訪問(wèn)類(lèi)B的對(duì)象的任何成員 D類(lèi)A的成員函數(shù)可以訪問(wèn)類(lèi)B的對(duì)象
7、的任何成員3.12有如下類(lèi)定義: class AAint a; public:int getRef( ) const return &a; /返回類(lèi)型為int, return &a為地址int getValue( ) const return a; /void set(int n) consta=n; /常函數(shù)不能修改成員friend void show(AA aa) const couta=a;/常函數(shù)不能修改成員void h(int b) Test:b=b;/static int g( ) return a;/靜態(tài)函數(shù)要通過(guò)對(duì)象訪問(wèn)成員private:int a;static int b;
8、const int c;int Test:b=0;在標(biāo)注號(hào)碼的行中,能被正確編譯的是(C)。A B C D4寫(xiě)出程序程序執(zhí)行結(jié)果。4.1#includeusing namespace std;class Test public:Test( ) n+=2; Test( ) n-=3;static int getNum( ) return n;private:static int n;int Test:n=1;int main( )Test* p = new Test;delete p;cout”n=”Test:getNum( )endl;return 0;n=04.2#includeusing
9、namespace std;class AAint n;public:AA(int k):n(k)int get( ) return n;int get( ) const return n+1;int main( )AA a(5);const AA b(6);couta.get()”,”b.get();return 0;574.3#includeusing namespace std;class MyClass public:int number;void set(int i);int number=3;void MyClass:set (int i)number=i;void main( )
10、MyClass my1;int number=10;my1.set(5);coutmy1.numberendl;my1.set(number);coutmy1.numberendl;my1.set(:number);coutmy1.number;51034.4#includeusing namespace std;class Testprivate:static int val;int a;public:static int func( );void sfunc(Test &r);int Test:val=200;int Test:func( )return val+;void Test:sf
11、unc(Test &r)r.a=125;coutResult3=r.aendl;void main( )coutResult1=Test:func( )endl;Test a;coutResult2=a.func()endl;a.sfunc(a);Result1=200Result2=201Result1=1255.編程題5.1 構(gòu)造一個(gè)日期時(shí)間類(lèi)(Timedate),數(shù)據(jù)成員包括年、月、日和時(shí)、分、秒,函數(shù)成員包括設(shè)置日期時(shí)間和輸出時(shí)間,其中年、月用枚舉類(lèi)型,并完成測(cè)試(包括用成員函數(shù)和用普通函數(shù))。#include #include #include enum YRY2000,Y2001,
12、Y2002,Y2003,Y2004,Y2005;/枚舉名必須是標(biāo)識(shí)符enum MTJan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec;class Timedateprivate:YR year;MT month;int date;int hh;int mm;int ss;public:Timedate()year=Y2000;month=Jan;date=1;hh=0;mm=0;ss=0;Timedate(YR a,MT b,int c)year=a;month=b;date=c;hh=12;mm=30;ss=0;void getdate(YR &,
13、MT &,int &);/體會(huì)用引用的優(yōu)點(diǎn),一次可返回3個(gè)值void gettime(int &,int &,int &);void putdate(YR ,MT ,int );void puttime(int ,int ,int );void list();void Timedate:getdate(YR &y,MT &m,int &d)y=year;m=month;d=date;void Timedate:gettime(int &a,int &b,int &c)a=hh;b=mm;c=ss;void Timedate:putdate(YR a,MT b,int c)year=a;mont
14、h=b;date=c;void Timedate:puttime(int a,int b,int c)hh=a;mm=b;ss=c;void Timedate:list()/成員函數(shù)coutyear/month/date :;switch(year)case Y2000:cout2000;break;case Y2001:cout2001;break;case Y2002:cout2002;break;case Y2003:cout2003;break;case Y2004:cout2004;break;case Y2005:cout2005;break;switch(month)/,case
15、 Jan:cout/Jan;break;case Feb:cout/Feb;break;case Mar:cout/Mar;break;case Apr:cout/Apr;break;case May:cout/May;break;case Jun:cout/Jun;break;case Jul:cout/Jul;break;case Aug:cout/Aug;break;case Sep:cout/Sep;break;case Oct:cout/Oct;break;case Nov:cout/Nov;break;case Dec:cout/Dec;break;cout/dateendl;co
16、uthour:minite:second :;couthh:mm:ssendl;void show(Timedate &td)/普通函數(shù),體會(huì)兩者的不同YR year;MT month;int date,hh,mm,ss;td.getdate(year,month,date);td.gettime(hh,mm,ss);coutyear/month/date :;switch(year)case Y2000:cout2000;break;case Y2001:cout2001;break;case Y2002:cout2002;break;case Y2003:cout2003;break;ca
17、se Y2004:cout2004;break;case Y2005:cout2005;break;switch(month)/,case Jan:cout/Jan;break;case Feb:cout/Feb;break;case Mar:cout/Mar;break;case Apr:cout/Apr;break;case May:cout/May;break;case Jun:cout/Jun;break;case Jul:cout/Jul;break;case Aug:cout/Aug;break;case Sep:cout/Sep;break;case Oct:cout/Oct;b
18、reak;case Nov:cout/Nov;break;case Dec:cout/Dec;break;cout/dateendl;couthour:minite:second :;couthh:mm:ssendl;int main(int argc, char* argv)Timedate A(Y2004,Mar,3),B;A.list();B.list();B.putdate(Y2005,Oct,18);B.puttime(17,30,00);B.list();show(B);return 0;5.2 定義一個(gè)日期類(lèi)Date,具有年月日等數(shù)據(jù)成員,顯示日期、加減天數(shù)等函數(shù)成員。注意需要考
19、慮閏年。#include using namespace std;class Dateint year,month,day;static const int days;bool LeapYear();bool EndofMonth();public:Date(int=1900,int=1,int =1);void Increment(int );void Decrement(int);void SetDate(int,int,int);void Print();const int Date:days=0,31,28,31,30,31,30,31,31,30,31,30,31;Date:Date
20、(int y,int m,int d)SetDate(y,m,d);void Date:SetDate(int y,int m,int d)year=(y=1900 & y=1 &m=1 & d=1 & d=daysmonth)?d:1;bool Date:LeapYear()return (year%400 = 0) | (year%4=0 & year%100!=0)? true:false;bool Date:EndofMonth()if(month=2 & LeapYear()return day=29;elsereturn day=daysmonth;void Date:Increm
21、ent(int n)int i;for(i=1;i=n;i+)if(EndofMonth() & month=12)year+;month=day=1;else if(EndofMonth()month+;day=1;elseday+;void Date:Decrement(int n)int i;for(i=1;i=n;i+)if(day=1)if(month=1)year-; month=12; day=31;else if(month=3)day=LeapYear()?29:28; month=2;elseday=days-month;elseday-;void Date:Print()
22、coutyear-month -day endl;void main()Date d1(2005,1,4),d2(2004,12,27);d1.Print();d1.Decrement(4);d1.Print();d2.Print();d2.Increment(70);d2.Print();5.3 定義一個(gè)圓類(lèi)(Circle),屬性為半徑(radius)、圓周長(zhǎng)和面積,操作為輸入半徑并計(jì)算周長(zhǎng)、面積,輸出半徑、周長(zhǎng)和面積。要求定義構(gòu)造函數(shù)(以半徑為參數(shù),默認(rèn)值為0,周長(zhǎng)和面積在構(gòu)造函數(shù)中生成)和復(fù)制構(gòu)造函數(shù)。#include const double PI=3.1415;using names
23、pace std;class Circledouble radius,length,area;public:Circle(double r=0)setr(r);length=2*PI*radius;area=PI*radius*radius;Circle(Circle& c)radius=c.radius ;length=c.length ;area=c.area ;void print()coutradius= radiusendl;coutlength= lengthendl;coutarea= areaendl;void setr(double r)radius=r;int main()
24、Circle c1(10),c2(c1);c1.print();c2.print();return 0;5.4 設(shè)計(jì)一個(gè)學(xué)校在冊(cè)人員類(lèi)(Person)。數(shù)據(jù)成員包括身份證號(hào)(IdPerson)、姓名(Name)、性別(Sex)、生日(Birth-day)和家庭住址(HomeAddress)。成員函數(shù)包括人員信息的錄入和顯示,還包括構(gòu)造函數(shù)與復(fù)制構(gòu)造函數(shù)。設(shè)計(jì)一個(gè)合適的初始值。#include #include const double PI=3.1415;using namespace std;struct dateint year,month,day;class Personchar ID1
25、2;char Name10;char Sex3;date Birth;char HomeAdd20;public:Person()ID0=Name0=Sex0=HomeAdd0=0;Birth.year=Birth.month=Birth.day=0;Person(char id,char name,char sex,date birth,char homeadd)strcpy(ID,id);strcpy(Name,name);strcpy(Sex,sex);Birth=birth;strcpy(HomeAdd,homeadd);Person(Person& p)strcpy(ID,p.ID)
26、;strcpy(Name,p.Name);strcpy(Sex,p.Sex);Birth=p.Birth;strcpy(HomeAdd,p.HomeAdd);void setID(char id)strcpy(ID,id);void setName(char name)strcpy(Name,name);void setSex(char sex)strcpy(Sex,sex);void setBirth(date birth)Birth=birth;void setHome(char homeadd)strcpy(HomeAdd,homeadd);void print()coutID= ID,
27、Name= Name,Sex= Sex,;coutBirth= Birth.year-Birth.month-Birth.day,;coutHomeAddendl;int main()date birth;birth.year =1991;birth.month =6;birth.day =12;Person p1(,陳建華,男,birth,中吳大道1801號(hào));p1.print ();Person p2;p2.print ();return 0 ;5.5設(shè)計(jì)如下類(lèi):1)建立一個(gè)Point類(lèi),表示平面中的一個(gè)點(diǎn);建立一個(gè)Line類(lèi),表示平面中的一條線端,內(nèi)含兩個(gè)Point類(lèi)的對(duì)象;建立Tria
28、ngle類(lèi),表示一個(gè)三角形,內(nèi)含三個(gè)Line類(lèi)的對(duì)象構(gòu)成一個(gè)三角形。2)設(shè)計(jì)三個(gè)類(lèi)的相應(yīng)的構(gòu)造函數(shù)、復(fù)制構(gòu)造函數(shù),完成初始化和對(duì)象復(fù)制3)設(shè)計(jì)Triangle類(lèi)的成員函數(shù)完成三條邊是否能構(gòu)成三角形的檢驗(yàn)和三角形面積計(jì)算,面積顯示。#include #include const double PI=3.1415;using namespace std;class Pointdouble X,Y;public:Point(double x=0,double y=0)X=x;Y=y;Point(Point& p)X=p.X ; Y=p.Y ;double getx()return X;double
29、gety()return Y;class LinePoint pstart,pend;double length;public:Line(Point p1,Point p2):pstart(p1),pend(p2)setl();Line(Line& l):pstart(l.pstart),pend(l.pend)setl();double getl()return length;void setl()double deltax,deltay;deltax=pstart.getx()-pend.getx();deltay=pstart.gety()-pend.gety();length=sqrt
30、(deltax*deltax+deltay*deltay);class TrangleLine lfirst,lsecond,lthird;double area;public:Trangle(Line lf,Line ls,Line lt):lfirst(lf),lsecond(ls),lthird(lt)area=0;bool check()double l1,l2,l3;l1=lfirst.getl();l2=lsecond.getl();l3=lthird.getl();return l1l2+l3 & l2l1+l3 & l3l1+l2;void calarea()if (check
31、()double s;double l1,l2,l3;l1=lfirst.getl();l2=lsecond.getl();l3=lthird.getl();s=(l1+l2+l3)/2.0;area=sqrt(s*(s-l1)*(s-l2)*(s-l3);void print()coutarea= areaendl;int main()Point p1,p2(4,0),p3(0,3);Line l1(p1,p2),l2(p1,p3),l3(p2,p3);Trangle t(l1,l2,l3);if(t.check ()t.calarea();t.print();return 0;5.6建立一
32、個(gè)分?jǐn)?shù)類(lèi)Fraction。分?jǐn)?shù)類(lèi)的數(shù)據(jù)成員包括分子和分母。成員函數(shù)包括構(gòu)造函數(shù)、復(fù)制構(gòu)造函數(shù)。構(gòu)造函數(shù)要對(duì)初始化數(shù)據(jù)進(jìn)行必要的檢查(分母不能為0)。將分?jǐn)?shù)顯示成 “a/b”形式的輸出函數(shù)。成員函數(shù)包括約分、通分、加、減、乘、除、求倒數(shù)、比較大小、顯示和輸入。完成以上所有成員函數(shù)并在主函數(shù)中進(jìn)行檢驗(yàn)。#include using namespace std;class Fractionint numerator,denominator;int common_divisor();/計(jì)算最大公約數(shù)void contracted();/分?jǐn)?shù)化簡(jiǎn)public: Fraction(int=0,int=1)
33、;Fraction(Fraction&);Fraction Add(Fraction);Fraction Sub(Fraction);Fraction Mul(Fraction);Fraction Div(Fraction);bool operator=(Fraction);bool operator=(Fraction);bool operator=(Fraction);bool operator=(f);bool operator(Fraction f)return !(operator=(f);bool operator!=(Fraction f)return !(operator=(f
34、);Fraction Updown();void Set(int=0,int=1);void disp()coutfraction= numerator/denominatorendl;Fraction:Fraction(int num,int deno)Set(num, deno);Fraction:Fraction(Fraction& f)numerator=f.numerator;denominator=f.denominator;Fraction Fraction:Add(Fraction f)Fraction Temp(numerator*f.denominator+f.numera
35、tor*denominator,denominator*f.denominator);Temp.contracted();return Temp;Fraction Fraction:Sub(Fraction f)Fraction Temp(numerator*f.denominator-f.numerator*denominator,denominator*f.denominator);Temp.contracted();return Temp;Fraction Fraction:Mul(Fraction f)Fraction Temp(numerator*f.numerator,denominator*f.denominator);Temp.contracted
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能交通系統(tǒng)建設(shè)合同4篇
- 2025年度產(chǎn)品上樣研發(fā)創(chuàng)新合作框架協(xié)議4篇
- 二零二四年專(zhuān)業(yè)調(diào)解離婚財(cái)產(chǎn)分配協(xié)議3篇
- 2025年度廠房租賃合同補(bǔ)充協(xié)議(含租賃物保險(xiǎn)及理賠)4篇
- 2025年度柴油產(chǎn)品售后服務(wù)協(xié)議3篇
- 女性職工知識(shí)培訓(xùn)課件
- 2024藝術(shù)品經(jīng)營(yíng)公司與藝術(shù)家前期藝術(shù)品交易合同
- 不動(dòng)產(chǎn)企業(yè)股權(quán)轉(zhuǎn)讓標(biāo)準(zhǔn)協(xié)議版B版
- 專(zhuān)業(yè)辦公設(shè)備配送及維護(hù)服務(wù)協(xié)議版A版
- 2024藥品、醫(yī)療器械質(zhì)量保證協(xié)議書(shū)
- 醫(yī)養(yǎng)康養(yǎng)園項(xiàng)目商業(yè)計(jì)劃書(shū)
- 《穿越迷宮》課件
- 《C語(yǔ)言從入門(mén)到精通》培訓(xùn)教程課件
- 2023年中國(guó)半導(dǎo)體行業(yè)薪酬及股權(quán)激勵(lì)白皮書(shū)
- 2024年Minitab全面培訓(xùn)教程
- 社區(qū)電動(dòng)車(chē)棚新(擴(kuò))建及修建充電車(chē)棚施工方案(純方案-)
- 項(xiàng)目推進(jìn)與成果交付情況總結(jié)與評(píng)估
- 鐵路項(xiàng)目征地拆遷工作體會(huì)課件
- 醫(yī)院死亡報(bào)告年終分析報(bào)告
- 建設(shè)用地報(bào)批服務(wù)投標(biāo)方案(技術(shù)方案)
- 工會(huì)工作人年度考核個(gè)人總結(jié)
評(píng)論
0/150
提交評(píng)論