C面向?qū)ο蟪绦蛟O(shè)計(jì)教程--陳維興-林小茶課后習(xí)題答案_第1頁(yè)
C面向?qū)ο蟪绦蛟O(shè)計(jì)教程--陳維興-林小茶課后習(xí)題答案_第2頁(yè)
C面向?qū)ο蟪绦蛟O(shè)計(jì)教程--陳維興-林小茶課后習(xí)題答案_第3頁(yè)
C面向?qū)ο蟪绦蛟O(shè)計(jì)教程--陳維興-林小茶課后習(xí)題答案_第4頁(yè)
C面向?qū)ο蟪绦蛟O(shè)計(jì)教程--陳維興-林小茶課后習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩72頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論