




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程課后題答案
什么是面向?qū)ο蟪绦蛟O(shè)計(jì)
面向?qū)ο蟪绦蛟O(shè)計(jì)是一種新的程序設(shè)計(jì)范型.這種范型的主要特征
是:
程序二對(duì)象+消息
面向?qū)ο蟪绦虻幕驹厥菍?duì)象。
主要結(jié)構(gòu)特點(diǎn)是:
第一,程序一般由類(lèi)的定義和類(lèi)的使用兩部分組成;
第二,程序中的一切操作都是通過(guò)向?qū)ο蟀l(fā)送消息來(lái)實(shí)現(xiàn)的。
什么是對(duì)象什么是類(lèi)對(duì)象與類(lèi)之間的關(guān)系是什么
對(duì)象是描述其屬性的數(shù)據(jù)以及對(duì)這些數(shù)據(jù)施加的一組操作封裝在一
起構(gòu)成的統(tǒng)一體。
類(lèi)就是具有相同的數(shù)據(jù)和相同的操作的一組對(duì)象的集合,也就是說(shuō),
類(lèi)是對(duì)具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的一類(lèi)對(duì)象的描述。
類(lèi)和對(duì)象之間的關(guān)系是抽象和具體的關(guān)系。類(lèi)是多個(gè)對(duì)象進(jìn)行綜合抽
象的結(jié)果,一個(gè)對(duì)象是類(lèi)的一個(gè)實(shí)例。
現(xiàn)實(shí)世界中的對(duì)象有哪些特征請(qǐng)舉例說(shuō)明。
現(xiàn)實(shí)世界中的對(duì)象具有以下特征:
1)每一個(gè)對(duì)象必須有一個(gè)名字以區(qū)別于其他對(duì)
象;
2)用屬性來(lái)描述對(duì)象的某些特征;
3)有一組操作,每組操作決定對(duì)象的一種行為;
4)對(duì)象的行為可以分為兩類(lèi):一類(lèi)是作用于自身
的行為,另一類(lèi)是作用于其他對(duì)象的行為。
例如一個(gè)教師是一個(gè)對(duì)象。每個(gè)教師對(duì)象有自己的名字來(lái)和別的教師
區(qū)別。教師具有編號(hào),姓名,年齡,職稱(chēng),專(zhuān)業(yè)等屬性。教師擁有走
路,吃飯,授課等行為操作。走路,吃飯是作用于自身的行為,授課
是作用于其他對(duì)象的行為。
什么是消息消息具有什么性質(zhì)
一個(gè)對(duì)象向另一個(gè)對(duì)象發(fā)出的請(qǐng)求成為“消息”。
消息具有以下3個(gè)性質(zhì):
1)同一個(gè)對(duì)象可以接收不同形式的多個(gè)消息,做
出不同的相應(yīng);
2)相同形式的消息可以傳遞給不同的對(duì)象,所做
出的響應(yīng)可以是不同的;
3)對(duì)消息的響應(yīng)并不是必須的,對(duì)象可以響應(yīng)消
息,也可以不響應(yīng)。
什么是抽象和封裝請(qǐng)舉例說(shuō)明。
抽象是將有關(guān)事物的共性歸納、集中的過(guò)程。
例如:把所有具有大學(xué)生學(xué)籍的人歸為一類(lèi),成為“大學(xué)生”,這就
是一個(gè)抽象。
封裝是指把數(shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來(lái)放在對(duì)象內(nèi)部,并盡可能
隱藏對(duì)象的內(nèi)部細(xì)節(jié)。
例如:每一臺(tái)洗衣機(jī)都有出廠日期、機(jī)器編號(hào)等屬性,也有啟動(dòng)、暫
停、選擇等操作。人們?cè)谑褂孟匆聶C(jī)的時(shí)候只需要按下對(duì)應(yīng)的按鈕,
而不用關(guān)心具體的內(nèi)部實(shí)現(xiàn)。這就是封裝。
多繼承是指多個(gè)基類(lèi)派生出一個(gè)派生類(lèi)的繼承關(guān)系。比如玩具車(chē)同時(shí)
繼承自玩具和車(chē)。
什么是多態(tài)請(qǐng)舉例說(shuō)明。
多態(tài)是指不同的對(duì)象收到相同的消息時(shí)執(zhí)行不同的操作。
例如,有一個(gè)窗口類(lèi)對(duì)象,還有一個(gè)棋子類(lèi)對(duì)象。當(dāng)我們發(fā)出“移動(dòng)”
消息時(shí),兩個(gè)對(duì)象的行為不同。
面向?qū)ο蟪绦蛟O(shè)計(jì)的主要優(yōu)點(diǎn)是什么
1.可提高程序的重用性;
2.可控制程序的復(fù)雜性;
3.可改善程序的可維護(hù)性;
4.能夠更好地支持大型程序設(shè)計(jì);
5.增強(qiáng)了計(jì)算機(jī)處理信息的范圍;
能夠很好地適應(yīng)新的硬件環(huán)境。
簡(jiǎn)述C++的主要特點(diǎn)。
1)C++是C的超集,保持與C的兼容。
2)保持了C的簡(jiǎn)潔、高效和接近匯編語(yǔ)言等特點(diǎn),
并對(duì)C的功能作了不少擴(kuò)充。用C++編寫(xiě)的程序比C更安全,可讀性
更好,代碼結(jié)構(gòu)更為合理。
3)程序質(zhì)量高。
4)增加了面向?qū)ο髾C(jī)制。
電
#incIude<iostream>
usingnamespacestd;
intmain()
(
inta,b,d,min;
cout?"Entertwonumbers:";
cin?a?b;
min=a>bb:a;
for(d=2;d<min;d++)
if(((a%d)=二0)&&((b%d)=0))break;
)
if(d-min)
(
cout?"Nocommondenominators"?endI;
return0;
)
cout?"TheIowestcommondenominatoris"?d?endI;
return0;
有效
沒(méi)有函數(shù)聲明;
函數(shù)定義沒(méi)有寫(xiě)返回值類(lèi)型。
(1)等價(jià),函數(shù)聲明可以省略參數(shù)的名字。
(2)不等價(jià),第二個(gè)的函數(shù)定義不能省略參數(shù)的
名字。
CDAAB
ACBDC
DC
101
1010
10
20
舉例說(shuō)明可以使用const替代#define以消除#define的不安全性。
電
#incIude<iostream>
usingnamespacestd;
intmain0
f
inta=1;
#defineT1a+a
#defineT2T1-T1
cout?"T2is"?T2?endI;
return0;
)
上面這個(gè)程序,初看應(yīng)該輸出T2is0
但是實(shí)際上,得出T2is2
如果把#define換成const,則可以輸出想要的結(jié)果。
用動(dòng)態(tài)分配空間的方法,計(jì)算Fibonacci數(shù)列的前20項(xiàng),并存儲(chǔ)到
動(dòng)態(tài)分配的空間中。
電
#incIude<iostream>
usingnamespacestd;
intmain()
(
int*pi=newint[20];
*pi=1;
pi[1]=1;
for(inti=2;i<20;i++)
pi[i]=pi[i-2]+pi[i-1];
)
return0;
)
電
重載sroot函數(shù),輸出一個(gè)數(shù)的二次方根。
電
#incIude<iostream>
usingnamespacestd;
doubIesroot(intnum)
return(double)sqrt((doubIe)num);
)
doublesroot(longnum)
return(double)sqrt((doubIe)num);
1
doublesroot(doublenum)
{
return(double)sqrt(num);
1
intmain()
(
return0;
)
電
解決百錢(qián)問(wèn)題。將一元人民幣換成1、2、5分的硬幣,有多少種換
法
#incIude<iostream>
usingnamespacestd;
intmain0
(
intnum=0;Default
constructorcaIled.
DefaultconstructorcaIled.
Construcotor:a=1,b=2
Construcotor:a=3,b=4
Construcotor:a=5,b=6
Con.
Copycon.
default.
Copycon.
A二5
B二14
A二9
B=14
5,7
Constructing
Constructing
A=5
B=15
A=10
B二15
Destructing
Destructing
voidpintStu();函數(shù)只有聲明,沒(méi)有定義。
age是私有成員,不能用對(duì)象直接調(diào)用。
voidprintStu0和voidsetSno(ints)沒(méi)有
加限定符Student::
voidsetAge(inta)在類(lèi)中沒(méi)有聲明
構(gòu)造函數(shù)不能定義為私有。否則無(wú)法創(chuàng)建對(duì)象。
下面是一個(gè)計(jì)算器類(lèi)的定義,請(qǐng)完成該類(lèi)成員函數(shù)的實(shí)現(xiàn)。
cIasscounter
publie:
counter(intnumber);
voidincrement0;電。0777ult()?"
)
)
電
修改,通過(guò)對(duì)象指針訪問(wèn)對(duì)象數(shù)組,使程序以相反的順序顯示每個(gè)
對(duì)象數(shù)組元素的qu*price值。
電
cIassbook
(
private:
intqu,price;
publie:
book(intqu);
intmu11();
);
book::book(intq)
if(q<1IIq>5)
qu=1;
eIse
qu=q;
}
price=10*qu;
)
intbook::mu11()
{
returnqu*price;
)
intmain0
(
bookbooks[5]={1,2,3,4,5);
book*p=books;
P十二4;
for(inti=0;i<5;i++)
(
cout?p->muIt()?"
一P;
return0;
)
電
構(gòu)建一個(gè)類(lèi)Stock,含字符數(shù)組stockcode□及整型數(shù)組成員quan、
雙精度型數(shù)據(jù)成員price。構(gòu)造函數(shù)含3個(gè)參數(shù):字符數(shù)組na□及q、
Po當(dāng)定義Stock的類(lèi)對(duì)象時(shí),將對(duì)象的第一個(gè)字符串參數(shù)賦給數(shù)據(jù)
成員stockcode,第2和第3個(gè)參數(shù)分別賦給quan、price。未設(shè)置
第2和第3個(gè)參數(shù)時(shí),quan的值為1000,price的值為.成員函數(shù)print
沒(méi)有形參,需使用this指針,顯示對(duì)象數(shù)據(jù)成員的內(nèi)容。編寫(xiě)程序
顯示對(duì)象數(shù)據(jù)成員的值。
電
#incIude<iostream>
usingnamespacestd;
cIassStock
private:
charstockcode[25];
intquan;
doubIeprice;
pubIic:
Stock(charna[],intq=1000,doubIep=;
Stock(charna[]);
voidprint();
);
Stock::Stock(charna[],intq=1000,doubIep二
strcpy(stockcode,na);
quan=q;
price二p;
voidStock::print()
(
cout?"stockcode:"?this->stockcode?"quan:"?
this->quan?"price:"?this->price?endI;
}
intmain()
(
Stockstockl("600001",3000,;
Stockstock2("600002");
0;
0;
return0;
)
編寫(xiě)一個(gè)程序,已有若干學(xué)生的數(shù)據(jù),包括學(xué)號(hào)、姓名、成績(jī),要
求輸出這些學(xué)生的數(shù)據(jù)并計(jì)算出學(xué)生人數(shù)和平均成績(jī)(要求將學(xué)生人
數(shù)和總成績(jī)用靜態(tài)數(shù)據(jù)成員表示)。
電
#include<iostream>
usingnamespacestd;
cIassstudent
(
private:
charname[25],studentNo[10];
intscore;
staticintsum;
staticinttotalScore;
pubIic:
student(charna[],charstuNo[],intsc);
voidshow();
staticvoidshowTotaI();
);
student::student(charna[],charstuNo[],intsc)
strcpy(name,na);
strcpy(studentNo,stuNo);
score=sc;
++sum;
totaIScore+二sc;
)
voidstudent::show()
cout?"姓名:?name?endI;
cout?"學(xué)號(hào):"?studentNo?endI;
cout?"成績(jī):"?score?endI;
}
voidstudent::showTotaI()
cout?"總?cè)藬?shù):"?sum?endI;
cout?”平均成績(jī):"?(doubIe;totaIScore/sum?endI;
)
intstudent::sum=0;
intstudent::totaIScore=0;
intmain()
students1(“張無(wú)忌”,"111254",75);
students2(“李莫愁","254114",60);
students3(“小龍女、"112587",88);
0;
0;
0;
student::showTotaI();
return0;
)
有哪幾種繼承方式每種方式的派生類(lèi)對(duì)基類(lèi)成員的繼承性如何
公有繼承,私有繼承和保護(hù)繼承。
基類(lèi)的私有成員,無(wú)論哪種繼承方式都不能訪問(wèn)。
公有繼承不改變基類(lèi)的公有和保護(hù)成員的訪問(wèn)限
制C
私有繼承將基類(lèi)的公有和保護(hù)成員都變成私有。
保護(hù)繼承將基類(lèi)的公有和保護(hù)成員都變成保護(hù)。
派生類(lèi)能否直接訪問(wèn)基類(lèi)的私有成員若否,應(yīng)如何實(shí)現(xiàn)
不能??梢栽诨?lèi)里添加一個(gè)公有成員函數(shù)來(lái)訪
問(wèn)私有成員,派生類(lèi)就能繼承這個(gè)公有成員函數(shù),實(shí)現(xiàn)對(duì)基類(lèi)私有成
員的訪問(wèn)。
保護(hù)成員有哪些特性保護(hù)成員以公有方式或私有方式繼承后的訪問(wèn)
特性如何
保護(hù)成員只能被本類(lèi)或本類(lèi)的派生類(lèi)所訪問(wèn),在
類(lèi)或派生類(lèi)外是不能被訪問(wèn)的。
后面一問(wèn)見(jiàn)第一題的答案。
派生類(lèi)構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序是怎樣的
構(gòu)造函數(shù)是先執(zhí)行父類(lèi)的構(gòu)造函數(shù),再執(zhí)行類(lèi)中
其他類(lèi)對(duì)象的構(gòu)造函數(shù),再執(zhí)行本類(lèi)的構(gòu)造函數(shù)。如果同級(jí)有多個(gè)構(gòu)
造函數(shù),則按聲明順序執(zhí)行。
析構(gòu)函數(shù)與構(gòu)造函數(shù)的執(zhí)行順序剛好相反。
派生類(lèi)構(gòu)造函數(shù)和析構(gòu)函數(shù)的構(gòu)造規(guī)則是怎樣的
派生類(lèi)名(參數(shù)總表):基類(lèi)名(參數(shù)總表)
派生類(lèi)新增數(shù)據(jù)成員的初
始化語(yǔ)句
)
派生類(lèi)中的析構(gòu)函數(shù)與基類(lèi)無(wú)關(guān)。
什么是多繼承多繼承時(shí),構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行順序是怎樣的
多繼承是指一個(gè)類(lèi)同時(shí)繼承自多個(gè)不同的基類(lèi)。
執(zhí)行順序同
在類(lèi)的派生中為何要引入虛基類(lèi)虛基類(lèi)構(gòu)造函數(shù)的調(diào)用順序是如何
規(guī)定的
如果一個(gè)類(lèi)有多個(gè)直接基類(lèi),而這些直接基類(lèi)又
有一個(gè)共同的基類(lèi),則在最底層的派生類(lèi)中會(huì)保留這個(gè)簡(jiǎn)介的共同基
類(lèi)數(shù)據(jù)成員的多份同名成員。在訪問(wèn)這些同名成員的時(shí)候,會(huì)產(chǎn)生二
義性。為了解決二義性,引入了虛基類(lèi)。
1)如果虛基類(lèi)中定義有帶形參的構(gòu)造函數(shù),并且
沒(méi)有定義默認(rèn)形式的構(gòu)造函數(shù),則整個(gè)繼承結(jié)構(gòu)中,所有直接或間接
的派生類(lèi)都必須在構(gòu)造函數(shù)的成員初始化表中列出對(duì)虛基類(lèi)構(gòu)造函
數(shù)的調(diào)用,以初始化在虛基類(lèi)中定義的數(shù)據(jù)成員。
2)建立一個(gè)對(duì)象時(shí),如果這個(gè)對(duì)象中含有從虛基
類(lèi)繼承來(lái)的成員,則虛基類(lèi)的成員是由最遠(yuǎn)派生類(lèi)的構(gòu)造函數(shù)通過(guò)調(diào)
用虛基類(lèi)的構(gòu)造函數(shù)進(jìn)行初始化的。該派生類(lèi)的其他基類(lèi)對(duì)虛基類(lèi)構(gòu)
造函數(shù)的調(diào)用都自動(dòng)被忽略。
3)若同一層次中同時(shí)包含虛基類(lèi)和非虛基類(lèi),應(yīng)
先調(diào)用虛基類(lèi)的構(gòu)造函數(shù),再調(diào)用非虛基類(lèi)的構(gòu)造函數(shù),最后調(diào)用派
生類(lèi)的構(gòu)造函數(shù)。
ACCB
ConstructorB1.
ConstructorB2.
ConstructorA.
3
2
主食二bread
副食二steak
0,0,0
0,1,0
3,6,9
ConstructorB1.
ConstructorB2.
ConstructorB3.
ConstructorA.
1
2
4,3
4
(1,2)
5,6
(6,9)
classbasel
classbase2
classIeve12
classbase2
cIasslevel1
classtopIeveI
#inoIude<iostream>
usingnamespacestd;
#incIude<iomanip>
cIasstabIe
publie:
table(intp,intq)
i二P;
j=q;
}
voidascii(void);
protected:
inti,j;
);
voidtable::ascii()
(
intk=1;
for(;i<=j;i++)
(
cout?setw(4)?i?"?(char)i;
if((k)%12二二0)
(
cout?"\n";
)
k++;
cout?"\nu;
)
cIassder_table:publictabIe
(
pubIic:
der_table(intp,intq,char*m):tabIe(p,q)
(
c=m;
)
voidprint();
protected:
char*c;
);
voidder_tabIe::print()
cout?c?"\n";
tabIe::ascii();
1
intmain()
(
der_tabIeob(*a','z',"ASCIIvaIue-----char");
0;
return0;
)
#incIude<iostream>
usingnamespacestd;
#incIude<iomanip>
cIassarea_c1
protected:
doubleheight;
doubIewidth;
publie:
area_c1(doubler,doubIes)
height=r;
width二s;
)
virtuaIdoublearea()=0;
);
cIassrectangle:pubIicarea_c1
publie:
rectangIe(doubler,doubles):area_c1(r,s){}
virtuaIdoublearea0;
);
doublerectangle::area()
(
returnheight*width;
)
cIassisosceIes:pubIicarea_c1
(
publie:
isosceles(doubler,doubles):area_c1(r,s){}
virtuaIdoublearea0;
);
doubIeisosceles::area()
(
return(height*width)/2;
)
intmain()
(
rectangler(10,5);
isosceIesi(4,6);
area_c1*a;
a=&r;
cout?"矩形的面積是:"?a->area()?endI;
a=&i;
cout?"三角形的面積是:"?a->area()?endI;
return0;
)
#incIude<iostream>
usingnamespacestd;
#incIude<iomanip>
cIassTime
publie:
Time(inth,intm,ints)
hours二h;
minutes=m;
seconds=s
voiddispIay()
cout?”出生時(shí)間:"?hours?"時(shí)"?minutes?
分"?seconds?"秒"?endI;
)
protected:
inthours,minutes,seconds;
);
cIassDate
(
publie:
Date(intm,intd,inty)
month-m;
day二d;
year=y;
)
voiddisplay()
{
cout?"出生年月:"?year?"年"?month?"月"
?day?"日"?endl;
}
protected:
intmonth,day,year;
);
cIassBirthtime:pubIicTime,pubIicDate
publie:
Birthtime(charname[],intm,intd,inty,inth,intmi,
ints):Time(h,mi,s),Date(m,d,y:
strcpy(ChiIdname,name);
voidshowName()
cout?"我的名字是:"?ChiIdname?endI;
private:
charChiIdname[25];
);
intmain()
Birthtimeb("xiaoming",3,6,2012,11,12,42);
0;
::display();
::dispIay();
return0;
}
#incIude<iostream>
usingnamespacestd;
#incIude<iomanip>
cIassperson
protected:
charnumber[25];
charname[25];
publie:
person(charnum[],charna[])
(
strepy(number,num);
strepy(name,na);
)
voidshowName()
(
cout?"編號(hào):"?number?"姓名:"?name;
)
);
cIassstudent:pubIicperson
private:
intcIassNumber,score;
publie:
student(charnum[],charna[],inteNumber,int
sc):person(num,na)
{
cIassNumber=eNumber;
score=sc;
}
voidshow()
(
showName();
cout?班號(hào):"<<cIassNumber?成績(jī):?score
?endI;
}
);
cIassteacher:pubIicperson
private:
chartitle[25],department[25];
publie:
teacher(charnum[],charna[],chartit[],char
depart[]);person(num,na)
{
strepy(title,tit);
strepy(department,depart);
)
voidshow()
(
showName();
cout?職稱(chēng):?title?部門(mén):"<<department
?endI;
C++第五章習(xí)題
1.什么是靜態(tài)聯(lián)編什么是動(dòng)態(tài)聯(lián)編
靜態(tài)聯(lián)編是指系統(tǒng)在編譯時(shí)就決定如何實(shí)現(xiàn)某一
動(dòng)作。
動(dòng)態(tài)聯(lián)編是指系統(tǒng)在運(yùn)行時(shí)動(dòng)態(tài)實(shí)現(xiàn)某一動(dòng)作。
1.編譯時(shí)的多態(tài)性與運(yùn)行時(shí)的多態(tài)性有什么區(qū)別他們的實(shí)現(xiàn)方式
有什么不同
靜態(tài)聯(lián)編支持的多態(tài)性稱(chēng)為編譯時(shí)多態(tài)性,也稱(chēng)靜態(tài)多態(tài)性。編譯時(shí)
多態(tài)性是通過(guò)函數(shù)重載和模板實(shí)現(xiàn)的。
動(dòng)態(tài)聯(lián)編所支持的多態(tài)性稱(chēng)為運(yùn)行時(shí)多態(tài)性,也稱(chēng)動(dòng)態(tài)多態(tài)性。是通
過(guò)虛函數(shù)來(lái)實(shí)現(xiàn)的。
1.簡(jiǎn)述運(yùn)算符重載規(guī)則。
a)C++中絕大部分的運(yùn)算符允許重載。
b)C++只能對(duì)已有的C++運(yùn)算符進(jìn)行重載。
c)運(yùn)算符重載是針對(duì)新類(lèi)型數(shù)據(jù)的實(shí)際需要,對(duì)
原有運(yùn)算符進(jìn)行適當(dāng)?shù)母脑焱瓿伞?yīng)與原有的功能相類(lèi)似。
d)重載不能改變運(yùn)算符的操作對(duì)象的個(gè)數(shù)。
e)重載不能改變運(yùn)算符原有的優(yōu)先級(jí)。
f)不能改變?cè)械慕Y(jié)合特性。
g)參數(shù)至少應(yīng)有一個(gè)是類(lèi)對(duì)象。
h)重載函數(shù)可以是普通函數(shù),也可以是類(lèi)的成員
函數(shù),也可以是類(lèi)的友元函數(shù)。
i)一般用于類(lèi)對(duì)象的運(yùn)算符除了賦值運(yùn)算符
都要重載。
1.友元運(yùn)算符函數(shù)和成員運(yùn)算符函數(shù)有什么不同
a)對(duì)于雙目運(yùn)算符,成員運(yùn)算符重載含有一個(gè)參
數(shù),友元重載含有兩個(gè)參數(shù);對(duì)于單目運(yùn)算符,成員重載沒(méi)有參數(shù),
友元重載有一個(gè)參數(shù)。
b)雙目運(yùn)算符一般可以被重載為友元或成員。但
是如果將一個(gè)對(duì)象和一個(gè)普通類(lèi)型運(yùn)算,必須重載為友元。
c)調(diào)用方式不同。
d)一般,雙目運(yùn)算符用友元,單目運(yùn)算符用成員。
如果操作數(shù)有隱式類(lèi)型轉(zhuǎn)換,則必須用友元。
1.什么是虛函數(shù)虛函數(shù)與函數(shù)重載有哪些相同點(diǎn)與不同點(diǎn)
虛函數(shù)就是在基類(lèi)中被關(guān)鍵字virtuaI說(shuō)明,并在派生類(lèi)中重新定義
的函數(shù)。
函數(shù)名都相同。
重載函數(shù)的參數(shù)個(gè)數(shù)或參數(shù)類(lèi)型必須有所不同。虛函數(shù)要求函數(shù)名,
返回類(lèi)型,參數(shù)個(gè)數(shù),參數(shù)的類(lèi)型和順序與基類(lèi)中的虛函數(shù)原型完全
相同。
1.什么是純虛函數(shù)什么是抽象類(lèi)
純虛函數(shù)是一個(gè)在基類(lèi)中說(shuō)明的虛函數(shù),它在該基類(lèi)中沒(méi)有定義,但
要求在它的派生類(lèi)中根據(jù)需要對(duì)它進(jìn)行定義,或仍說(shuō)明為純虛函數(shù)。
如果一個(gè)類(lèi)至少有一個(gè)純虛函數(shù),那么就稱(chēng)這個(gè)類(lèi)為抽象類(lèi)。
7-12DAADCC
13.
不對(duì),參數(shù)個(gè)數(shù)必須一樣。
14.
7
6
15.
Thisisc++book.
第一個(gè)字符:T
第16個(gè)字符:.
第26個(gè)字符:數(shù)組下標(biāo)超界!
16.
m二千米
17.
#incIude<iostream>
usingnamespacestd;
cIasstwoDArray
(
inta[2][3];
publie:
twoDArray()
{
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
a[i][j]=5;
)
twoDArray(intb[][3])
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
a[i][j]=b[i][j];
)
voidshow();
twoDArrayoperator+(twoDArrayn);
twoDArrayoperator-(twoDArrayn);
);
voidtwoDArray::show()
(
for(inti=0;i<2;i++)
(
for(intj=0;j<3;j++)
cout?a[i][j];
cout?endI;
)
)
twoDArraytwoDArray::operator+(twoDArrayn)
{
twoDArraytemp;
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
[i][j]=a[i][j]+
returntemp;
)
twoDArraytwoDArray::operator-(twoDArrayn)
(
twoDArraytemp;
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
[i][j]=a[i][j]-
returntemp;
1
intmain()
(
inta[2][3];
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
cin?a[i][j];
twoDArraya1,a2(a),totaI,sub;
totaI=a1+a2;
sub-a1-a2;
0;
0;
return0;
}
18.
#incIude<iostream>
usingnamespacestd;
cIasstwoDArray
inta[2][3];
publie:
twoDArray()
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
a[i][j]=5;
)
twoDArray(intb[][3])
(
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
a[i][j]=b[i][j];
)
voidshow();
friendtwoDArrayoperator+(twoDArraym,twoDArrayn);
friendtwoDArrayoperator-(twoDArraym,twoDArrayn);
);
voidtwoDArray::show()
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
cout?a[i][j];
cout?endI;
)
)
twoDArrayoperator+(twoDArraym,twoDArrayn)
(
twoDArraytemp;
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
[i][j]=+⑴口];
returntemp;
)
twoDArrayoperator-(twoDArraym,twoDArrayn)
twoDArraytemp;
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
returntemp;
)
intmain()
(
inta[2][3];
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
cin?a[i][j];
twoDArraya1,a2(a),totaI,sub;
totaI=a1+a2;
sub=a1-a2;
0;
0;
return0;
)
電
19.
電
#incIude<iostream>
usingnamespacestd;
cIasscompIex
(
doublereaI,imag;
publie:
compIex(doublere,doubIeim)
reaIre;
imag=im;
)
friendcomplexoperator+(compIexa,compIexb);
voidprint();
);
compIexoperator+(compIexa,compIexb)
(
returncompIex+,+;
)
voidcomplex::print()
cout?"("?reaI?","?imag?")"?endI;
)
intmain()
compIexc1,;
complexc2,;
complextotaI=d+c2;
0;
return0;
1
電
20.
電
#incIude<iostream>
usingnamespacestd;
constdoubIePI
cIassContainer
protected:
doubler,d;如果是圓柱體,r為底面半徑,d為高。如果是正
方體,r為邊長(zhǎng),d為0。
publie:
Container(doubIea,doubIeb=0)
{
r二a;
d二b;
)
virtualdoubleserface()=0;cerr和clog間的區(qū)別是
cerr不經(jīng)過(guò)緩沖區(qū)直接顯示錯(cuò)誤信息。而cIog
存放在緩沖區(qū),緩沖區(qū)滿(mǎn)或遇上endl時(shí)再輸出。
C++提供哪兩種控制輸入輸出格式的方法
一種是使用ios類(lèi)中的有關(guān)格式控制的流成員函
數(shù)進(jìn)行格式控制,另一種是使用稱(chēng)為操縱符的特殊類(lèi)型的函數(shù)控制。
C++進(jìn)行文件輸入輸出的基本過(guò)程是什么
首先創(chuàng)建一個(gè)流對(duì)象,然后將這個(gè)流對(duì)象與文件
相關(guān)聯(lián),即打開(kāi)文件,此時(shí)才能進(jìn)行讀寫(xiě)操作,讀寫(xiě)操作完成后再關(guān)
閉這個(gè)文件。
BCA
電
#include<iostream>
#incIude<iomanip>
usingnamespacestd;
intfactoriaI(intn)
if(n==0||n=1)
returnn;
returnfactoriaI(n-1)*n;
1
intmain()
(
for(inti=1;i<=9;i++)
(
cout?setw(5)?factoriaI(i);
if(i%3=0)
(
cout?endI;
)
}
return0;
)
#incIude<iostream>
#incIude<iomanip>
usingnamespacestd;
intmain()
(
for(inti=1;i<=7;i++)
(
cout?setw(16-i);
for(intj=1;j<=(2*i-1);j++)
cout?'A';
cout?endI;
}
return0;
}
#incIude<iostream>
#incIude<iomanip>
usingnamespacestd;
cIassmatrix
private:
intdata[2][3];
publie:
matrix(){}
ostream&operator?(ostream&,matrix&);
istream&operator?(istream&,matrix&);
friendmatrixoperator+(matrix&,matrix&);
);
ostream&operator?(ostream&os,matrix&a)
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
os?[i][j]?"
)
os?endI;
returnos;
)
istream&operator?(istream&in,matrix&a)
(
cout?"請(qǐng)輸入一個(gè)2行3列矩陣:"?endI;
for(inti=0;i<2;i++)
{
for(intj=0;j<3;j++)
(
in?[i][j];
)
)
returnin;
}
matrixoperator+(matrix&a,matrix&b)
matrixtemp;
for(inti=0;i<2;i++)
{
for(intj=0;j<3;j++)
(
)
)
returntemp;
)
intmain()
matrixml,m2,totaI;
cin?ml?m2;
totaI=ml+m
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)業(yè)基金貸款合同范本
- 2025護(hù)膚品代理合同范本
- 2025四平市消防救援支隊(duì)合同制消防員、文員體能達(dá)標(biāo)表
- 2025海運(yùn)貨物出口運(yùn)輸代理合同
- 2025汽車(chē)抵押貸款合同
- 石油開(kāi)采業(yè)的資源儲(chǔ)量與利用現(xiàn)狀考核試卷
- 竹材在復(fù)合材料領(lǐng)域的應(yīng)用考核試卷
- 電子電路的智能城市基礎(chǔ)設(shè)施建設(shè)考核試卷
- 童車(chē)制造企業(yè)市場(chǎng)拓展與渠道建設(shè)考核試卷
- 電視機(jī)制造業(yè)的可持續(xù)發(fā)展目標(biāo)與實(shí)現(xiàn)路徑考核試卷
- DB45-T 2840-2024 陸川豬疫病防治技術(shù)規(guī)程
- DL∕T 843-2010 大型汽輪發(fā)電機(jī)勵(lì)磁系統(tǒng)技術(shù)條件
- 材料腐蝕與防護(hù)智慧樹(shù)知到期末考試答案章節(jié)答案2024年山東建筑大學(xué)
- 年產(chǎn)15萬(wàn)噸煤制甲醇生產(chǎn)的工藝設(shè)計(jì)0
- 《水泥窯爐富氧(全氧)燃燒技術(shù)規(guī)范》
- 第37章 主要病原性真菌課件
- 2023年小型水庫(kù)雨水情測(cè)報(bào)和大壩安全監(jiān)測(cè)設(shè)施項(xiàng)目-實(shí)施方案
- 2024年福建省高中生物學(xué)業(yè)水平考試生物試卷試題(含答案詳解)
- 工程施工材料采購(gòu)方案工程材料采購(gòu)方案
- DZ∕T 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬(正式版)
- 蘇教版高中化學(xué)實(shí)驗(yàn)一覽表
評(píng)論
0/150
提交評(píng)論