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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C+面向?qū)ο蟪绦蛟O(shè)計(jì)教程課后題答案1、 1 什么就是面向?qū)ο蟪绦蛟O(shè)計(jì)?面向?qū)ο蟪绦蛟O(shè)計(jì)就是一種新的程序設(shè)計(jì)范型、這種范型的主要特征就是:程序=對(duì)象+消息面向?qū)ο蟪绦虻幕驹鼐褪菍?duì)象。主要結(jié)構(gòu)特點(diǎn)就是:第一,程序一般由類的定義與類的使用兩部分組成;第二,程序中的一切操作都就是通過(guò)向?qū)ο蟀l(fā)送消息來(lái)實(shí)現(xiàn)的。1、 2 什么就是對(duì)象?什么就是類?對(duì)象與類之間的關(guān)系就是什么?對(duì)象就是描述其屬性的數(shù)據(jù)以及對(duì)這些數(shù)據(jù)施加的一組操作封裝在一起構(gòu)成的統(tǒng)一體。類就就是具有相同的數(shù)據(jù)與相同的操作的一組對(duì)象的集合, 也就就是說(shuō), 類就是對(duì)具有相同數(shù)據(jù)結(jié)構(gòu)與相同操作的一類對(duì)象的描述。類與對(duì)象之間的關(guān)系就是抽象與具體的關(guān)

2、系。類就是多個(gè)對(duì)象進(jìn)行綜合抽象的結(jié)果 , 一個(gè)對(duì)象就是類的一個(gè)實(shí)例。1、 3 現(xiàn)實(shí)世界中的對(duì)象有哪些特征?請(qǐng)舉例說(shuō)明?,F(xiàn)實(shí)世界中的對(duì)象具有以下特征:1) 每一個(gè)對(duì)象必須有一個(gè)名字以區(qū)別于其她對(duì)象;2) 用屬性來(lái)描述對(duì)象的某些特征;3) 有一組操作, 每組操作決定對(duì)象的一種行為;4) 對(duì)象的行為可以分為兩類: 一類就是作用于自身的行為, 另一類就是作用于其她對(duì)象的行為。例如一個(gè)教師就是一個(gè)對(duì)象。每個(gè)教師對(duì)象有自己的名字來(lái)與別的教師區(qū)別。教師具有編號(hào), 姓名 , 年齡 , 職稱 , 專業(yè)等屬性。教師擁有走路, 吃飯 , 授課等行為操作。走路, 吃飯就是作用于自身的行為, 授課就是作用于其她對(duì)象的行

3、為。1、 4 什么就是消息?消息具有什么性質(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)。1、 5 什么就是抽象與封裝?請(qǐng)舉例說(shuō)明。抽象就是將有關(guān)事物的共性歸納、集中的過(guò)程。例如 : 把所有具有大學(xué)生學(xué)籍的人歸為一類, 成為“大學(xué)生”, 這就就是一個(gè)抽象。封裝就是指把數(shù)據(jù)與實(shí)現(xiàn)操作的代碼集中起來(lái)放在對(duì)象內(nèi)部, 并盡可能隱藏對(duì)象的內(nèi)部細(xì)節(jié)。例如 : 每一臺(tái)洗衣機(jī)都有出廠

4、日期、機(jī)器編號(hào)等屬性, 也有啟動(dòng)、暫停、 選擇等操作。人們?cè)谑褂孟匆聶C(jī)的時(shí)候只需要按下對(duì)應(yīng)的按鈕, 而不用關(guān)心具體的內(nèi)部實(shí)現(xiàn)。這就就是封裝。1、 6 什么就是繼承?請(qǐng)舉例說(shuō)明。繼承就就是允許派生類使用基類的數(shù)據(jù)與操作, 同時(shí) , 派生類還可以增加新的操作與數(shù)據(jù)。例如 : 哺乳動(dòng)物就是一種熱血、有毛發(fā)、用奶哺育幼崽的動(dòng)物; 狗就是有犬牙、食肉、特定的骨骼結(jié)構(gòu)、群居的哺乳動(dòng)物。狗就繼承了哺乳動(dòng)物。1、 7 若類之間具有繼承關(guān)系, 則她們之間具有什么特征?若類之間具有繼承關(guān)系, 則她們之間具有下列幾個(gè)特征:1) 類間具有共享特征( 包括數(shù)據(jù)與操作代碼的共享);2) 類間具有差別或新增部分( 包括非共

5、享的數(shù)據(jù)與操作代碼 );3) 類具有層次結(jié)構(gòu)。1、 8 什么就是單繼承、多繼承?請(qǐng)舉例說(shuō)明。單繼承就是指每個(gè)派生類只直接繼承了一個(gè)基類的特征。例如狗繼承自哺乳動(dòng) 物。多繼承就是指多個(gè)基類派生出一個(gè)派生類的繼承關(guān)系。比如玩具車同時(shí)繼承自玩具與車。1、 9 什么就是多態(tài)?請(qǐng)舉例說(shuō)明。多態(tài)就是指不同的對(duì)象收到相同的消息時(shí)執(zhí)行不同的操作。例如 , 有一個(gè)窗口類對(duì)象, 還有一個(gè)棋子類對(duì)象。當(dāng)我們發(fā)出“移動(dòng)”消息時(shí) , 兩個(gè)對(duì)象的行為不同。1、 10 面向?qū)ο蟪绦蛟O(shè)計(jì)的主要優(yōu)點(diǎn)就是什么?1. 可提高程序的重用性;2. 可控制程序的復(fù)雜性;3. 可改善程序的可維護(hù)性;4. 能夠更好地支持大型程序設(shè)計(jì);5.

6、增強(qiáng)了計(jì)算機(jī)處理信息的范圍;能夠很好地適應(yīng)新的硬件環(huán)境。2、1簡(jiǎn)述C+勺主要特點(diǎn)1) C+就是C的超集,保持與C的兼容。2) 保持了 C的簡(jiǎn)潔、高效與接近匯編語(yǔ)言等特點(diǎn),并對(duì)C的功能作了不少擴(kuò)充。用C+S寫(xiě)的程序比c更安全,可讀性更好,代碼結(jié)構(gòu)更為合理。3)4)程序質(zhì)量高。增加了面向?qū)ο髾C(jī)制2、2上#include <iostream> using namespacestd;int main()int a, b, d, min;cout << "Enter two numbers:" ;cin >> a >> b;min =

7、a > b ? b : a;for (d = 2; d < min; d+)if (a % d) =0) && (b % d ) =0) break;if (d = min) cout << "No common denominators" << endl;return 0;cout << "The lowest common denominator is" << d << endl; return 0; 上2、3有效2、4沒(méi)有函數(shù)聲明;函數(shù)定義沒(méi)有寫(xiě)返回值類型。2、

8、5 (1)等價(jià),函數(shù)聲明可以省略參數(shù)的名字。(2)不等價(jià),第二個(gè)的函數(shù)定義不能省略參數(shù)的名字。2、6-2、10 CDAAB2、11-2、15 ACBDC2、16-2、17 DC2、181012、1910 102、2010202、21舉例說(shuō)明可以使用const替代#de巾ne以消除#de巾ne的不安全性。#include <iostream> using namespacestd;int main()int a = 1;#define T1 a+a#define T2 T1-T1cout <<"T2 is "<< T2 <<en

9、dl;return 0;上上面這個(gè)程序,初瞧應(yīng)該輸出T2 is 0但就是實(shí)際上,得出T2 is 2如果把#de巾ne換成const,則可以輸出想要的結(jié)果2、22用動(dòng)態(tài)分配空間的方法,計(jì)算Fibonacci數(shù)列的前20項(xiàng),并存儲(chǔ)到動(dòng)態(tài)分 配的空間中。#include <iostream>using namespacestd;int main()int *pi = new int 20;*pi =1;pi 1 = 1;for (int i = 2; i <20; i+)pii = pii -2 + pii -1;return 0;2、23重載sroot函數(shù),輸出一個(gè)數(shù)的二次方根。

10、電#include <iostream> using namespacestd;double sroot( int num) return ( double )sqrt( double )num);double sroot( long num) return ( double )sqrt( double )num);double sroot ( double num) return ( double )sqrt(num);int main() return 0;2、24解決百錢(qián)問(wèn)題。將一元人民幣換成 1、2、5分的硬幣,有多少種換法?電#include <iostream&g

11、t; using namespacestd;int main()int num = 0; /總共換法的總數(shù)。初始化為0。for (int i = 0; i <=100; i+)for (int j = 0; j <=50; j+)if (i +2*j) >100) break;for (int k = 0; k <= 20; k+)if (i +2*j + 5*k) = 100)num+;cout <<"1 分" << i << "個(gè);"<< "2 分" <

12、< j << "個(gè);"<< "5 分"<< k << "個(gè);"<< endl;)if (i +2*j + 5*k) > 100)(break;)cout << num << endl;return 0;)2、25輸入兩個(gè)整數(shù),按由小到大的順序輸出。要求使用變量的引用。#include <iostream> using namespacestd;void s &a, int &b)(a = a + b;b = a

13、- b;a = a - b;)int main()(int a, b;cin >> a >>b;if (a > b)( swap(a, b);)cout << a <<"," << b << endl;return 0;)02、26用二分法求解 f(x)=0的根。電#include <iostream> using namespacestd;double Fun( double x)return 35*x + 25; / 假設(shè) f(x)=35x+25int main()double a

14、, b;cin >> a;if (Fun(a) = 0)cout << "x = " << a << endl; return 0;docin >> b;while (Fun(a) * Fun(b) >=0);if (Fun(b) = 0)cout << "x = " << b << endl; return 0;if (a > b)a = a + b;b = a - b;a = a - b;while (1)if (Fun(a + b)/ 2)

15、= 0)2 << endl;cout << "x = " << (a + b)/ return 0;if (Fun(a) * Fun(a + b)/2) < 0)b = (a + b)/2;if (Fun(b) * Fun(a + b)/2) < 0)a = (a + b)/2;return 0;3、1類聲明的一般格式就是什么?由class 類名 private :私有數(shù)據(jù)成員與成員函數(shù)public :公有數(shù)據(jù)成員與成員函數(shù)上3、2構(gòu)造函數(shù)與析構(gòu)函數(shù)的主要作用就是什么?它們各自有什么特性?構(gòu)造函數(shù)就是一種特殊的成員函數(shù),它主要

16、用于為對(duì)象分配 空間,進(jìn)行初始化。構(gòu)造函數(shù)的名字必須與類名相同,而不能由用戶任意命名。它可以有任意類型的 參數(shù),但不能具有返回值類型。析構(gòu)函數(shù)通常用于執(zhí)行一些清理任務(wù),如釋放分配給對(duì)象的內(nèi)存空間等。析構(gòu)函數(shù)名與類名相同,但它前面必須加一個(gè)波浪號(hào)。不能有返回值,也不能有參 數(shù)。所謂對(duì)象數(shù)組, 就是指每一個(gè)數(shù)組元素都就是對(duì)象的數(shù)組。3、 4 什么就是this 指針?它的主要作用就是什么?C+為成員函數(shù)提供了一個(gè)名為this的指針,這個(gè)指針?lè)Q為自引用指針。每當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí), 系統(tǒng)就把this 指針初始化為指向該對(duì)象。一個(gè)類的所有對(duì)象合用一份成員函數(shù),this 指針可以幫助對(duì)象辨別出當(dāng)前調(diào)用的就是自

17、己的那個(gè)對(duì)象的數(shù)據(jù)成員與函數(shù)。3、 5 友元函數(shù)有什么作用?友元函數(shù)可以在類的外部訪問(wèn)類的私有成員或保護(hù)成員。3、 6(1) 聲明并定義了P2, P3, 并用默認(rèn)無(wú)參構(gòu)造函數(shù)初始化。(2)聲明并定義了 P2,并調(diào)用Point類的拷貝構(gòu)造函數(shù)用P1對(duì)P2進(jìn)行初始化。(3)聲明并定義了 P2,并調(diào)用Point類的拷貝構(gòu)造函數(shù)用P1對(duì)P2進(jìn)行初始化。(4)調(diào)用拷貝構(gòu)造函數(shù),將P1的成員值賦值給P4的成員。3、 7-3、 10 BCCB3、 11-3、 15 BAABA3、 16-3、 17 BB3、 1810,20 30,4850,6870,8090,1611,1203 19Constructing

18、10100Destructing3 203objects in existence4objects in existence after allocation3objects in existence after deletion3 21Counting at0Counting at93 22Default constructor calledDefault constructor calledConstrucotor:a=1,b=2Construcotor:a=3,b=4Construcotor:a=5,b=63 23ConCopy condefaultCopy con3 24A=5B=14

19、A=9B=143 255,722 253 26ConstructingConstructingA=5B=15A=10B=15DestructingDestructing3、27void pintStu(); 函數(shù)只有聲明,沒(méi)有定義。age就是私有成員,不能用對(duì)象直接調(diào)用。3、28沒(méi)有加限定符void printStu() 與 void setSno(int s) Student:void setAge(int a)在類中沒(méi)有聲明3、29構(gòu)造函數(shù)不能定義為私有。否則無(wú)法創(chuàng)建對(duì)象3、30下面就是一個(gè)計(jì)算器類的定義,請(qǐng)完成該類成員函數(shù)的實(shí)現(xiàn)。class counterpublic :counter(

20、 int number);/給原始值加1 /給原始值減1/取的計(jì)數(shù)器值 /顯示計(jì)數(shù)void increment。;void decrement。;int getvalue();int print();private :int value;;counter二counter(int number)value = number;void counter:increment()+value;void counter二decrement。-value;int counter二getvalue()return value;int counter二print()cout << value <

21、;<endl;return value;上3、31根據(jù)注釋語(yǔ)句提示,實(shí)現(xiàn)類Date的成員函數(shù)#include <iostream> using namespacestd;class Datepublic :void printDate();void setDay( int d);void setMonth( int m);void setYear( int y);private :int day, month, year;;void Date:printDate()cout <<"今天就是"<< year << &quo

22、t;年"<< month << "月"<< day << "日<< endl;void Date二setDay( int d)day = d;void Date:setMonth( int m) month = m;void Date二setYear(int y) year = y; int main()Date testDay;testDay 、setDay( 5);testDay 、setMonth( 10);testDay 、setYear( 2003);testDay 、printDat

23、e();return 0;3、32建立類cylinder, cylinder的構(gòu)造函數(shù)被傳遞了兩個(gè)double值,分別表示圓柱體的半徑與高度。用類cylinder計(jì)算圓柱體的體積,并存儲(chǔ)在一個(gè) double變量中。在類cylinder中包含一 個(gè)成員函數(shù)vol,用來(lái)顯示每個(gè)cylinder對(duì)象的體積。const int PI = 3、14;class cylinderprivate :double radius, height, volume;public :cylinder( int rad, int hei);double getVolume();void vol();;cylinder二

24、cylinder( int rad, int hei)radius = rad;height = hei;double cylinder二getVolume()volume = PI * radius * radius *height; return volume;void cylinder:vol()cout <<"圓柱體的體積就是:"<< volume <<endl;召3、33構(gòu)建一個(gè)類book,其中包含有兩個(gè)私有數(shù)據(jù)成員qu與price,將qu初始化為15,將price初始化為qu的10倍,建立一個(gè)有5個(gè)元素的數(shù)組對(duì)象。顯示每個(gè)對(duì)象

25、數(shù)組元素的qu*price值。召class bookprivate :int qu, price;public :book( int qu); int mult();book:book( int q)if (q < 1 II q >5)1;qu =elsequ = q;price =10 * qu;int book二mult()return qu * price;int main()book books 5 = 1,2, 3, 4, 5;for (int i = 0; i <5; i+)cout << booksi 、mult() <<上3、34修改3

26、、33,通過(guò)對(duì)象指針訪問(wèn)對(duì)象數(shù)組,使程序以相反的順序顯示每個(gè)對(duì)象數(shù)組元素 的 qu*price 值。電class bookprivate :int qu, price;public :book( int qu);int mult();book:book( int q)if (q < 1 | q >5)qu =1;elsequ = q;price =10 * qu;int book二mult()return qu * price;int main()book books 5 = 1,2, 3, 4, 5;book *p = books;p +=4;for (int i = 0; i

27、<5; i+)cout << p->mult() <<"-p;return 0;上3、35構(gòu)建一個(gè)類Stock,含字符數(shù)組stockcode口及整型數(shù)組成員quan、雙精度型數(shù)據(jù)成員 price。構(gòu)造函數(shù)含3個(gè)參數(shù):字符數(shù)組na口及q、p。當(dāng)定義Stock的類對(duì)象時(shí),將對(duì)象的第一 個(gè)字符串參數(shù)賦給數(shù)據(jù)成員stockcode,第2與第3個(gè)參數(shù)分別賦給 quan、price。未設(shè)置第2與第3個(gè)參數(shù)時(shí),quan的值為1000,price的值為8、98、成員函數(shù)print沒(méi)有形參,需使用this 指針,顯示對(duì)象數(shù)據(jù)成員的內(nèi)容。編寫(xiě)程序顯示對(duì)象數(shù)據(jù)成員的值。

28、上#include <iostream> using namespacestd;class Stockprivate :char stockcode 25;int quan;double price;public :Stock( char na, int q = 1000, double p = 8、98);Stock( char na); void print();;Stock:Stock( char na口,int q = 1000, double p = 8、98)strcpy(stockcode, na);quan = q; price = p;void Stock二pri

29、nt()cout << "stockcode: "<< this ->stockcode << " quan: " << this ->quan<< "price: "<< this ->price << endl;int main()Stock stock1("600001", 3000, 5、67);Stock stock2("600002");stock1 、print();stock2

30、、print();return 0;上3、36編寫(xiě)一個(gè)程序,已有若干學(xué)生的數(shù)據(jù),包括學(xué)號(hào)、女4名、成績(jī),要求輸出這些學(xué)生的數(shù)據(jù) 并計(jì)算出學(xué)生人數(shù)與平均成績(jī)(要求將學(xué)生人數(shù)與總成績(jī)用靜態(tài)數(shù)據(jù)成員表示)。#include <iostream>using namespacestd;class studentprivate :char name25, studentNo 10;int score;staticint sum;staticint totalScore;public :student( char na, char stuNo口,int sc);void show();stati

31、c void showTotal();student:student( char na, char stuNo, int sc) strcpy(name, na);strcpy(studentNo, stuNo);score = sc;+sum;totalScore += sc;void student:show()cout <<"姓名:"<<name <<endl;cout <<"學(xué)號(hào):"<<studentNo << endl;cout <<"成績(jī):"

32、;<<score << endl; void student:showTotal()cout <<" 總?cè)藬?shù) : " << sum << endl;cout <<" 平均成績(jī): " << ( double )totalScore/sum <<endl;int student:sum =0;int student:totalScore =0;int main()student s1("張無(wú)忌","111254",75);s

33、tudent s2("李莫愁","254114",60);student s3("小龍女","112587",88);s1 、 show();s2 、 show();s3 、 show();student:showTotal();return 0;4、 1 有哪幾種繼承方式?每種方式的派生類對(duì)基類成員的繼承性如何?公有繼承, 私有繼承與保護(hù)繼承?;惖乃接谐蓡T, 無(wú)論哪種繼承方式都不能訪問(wèn)。公有繼承不改變基類的公有與保護(hù)成員的訪問(wèn)限制。私有繼承將基類的公有與保護(hù)成員都變成私有。保護(hù)繼承將基類的公有與保護(hù)成員都變成保

34、護(hù)。4、 2 派生類能否直接訪問(wèn)基類的私有成員?若否, 應(yīng)如何實(shí)現(xiàn)?不能。 可以在基類里添加一個(gè)公有成員函數(shù)來(lái)訪問(wèn)私有成員派生類就能繼承這個(gè)公有成員函數(shù), 實(shí)現(xiàn)對(duì)基類私有成員的訪問(wèn)。4、 3 保護(hù)成員有哪些特性?保護(hù)成員以公有方式或私有方式繼承后的訪問(wèn)特性如何?保護(hù)成員只能被本類或本類的派生類所訪問(wèn), 在類或派生類外就是不能被訪問(wèn)的。后面一問(wèn)見(jiàn)第一題的答案。4、 4 派生類構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行順序就是怎樣的?構(gòu)造函數(shù)就是先執(zhí)行父類的構(gòu)造函數(shù), 再執(zhí)行類中其她類對(duì)象的構(gòu)造函數(shù), 再執(zhí)行本類的構(gòu)造函數(shù)。如果同級(jí)有多個(gè)構(gòu)造函數(shù), 則按聲明順序執(zhí)行。析構(gòu)函數(shù)與構(gòu)造函數(shù)的執(zhí)行順序剛好相反。4、 5

35、派生類構(gòu)造函數(shù)與析構(gòu)函數(shù)的構(gòu)造規(guī)則就是怎樣的?派生類名( 參數(shù)總表) : 基類名 ( 參數(shù)總表 )派生類新增數(shù)據(jù)成員的初始化語(yǔ)句派生類中的析構(gòu)函數(shù)與基類無(wú)關(guān)。4、 6 什么就是多繼承?多繼承時(shí), 構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行順序就是怎樣的?多繼承就是指一個(gè)類同時(shí)繼承自多個(gè)不同的基類。執(zhí)行順序同4、 45、 7 在類的派生中為何要引入虛基類?虛基類構(gòu)造函數(shù)的調(diào)用順序就是如何規(guī)定的?如果一個(gè)類有多個(gè)直接基類, 而這些直接基類又有一個(gè)共同的基類 , 則在最底層的派生類中會(huì)保留這個(gè)簡(jiǎn)介的共同基類數(shù)據(jù)成員的多份同名成員。 在訪問(wèn)這些同名成員的時(shí)候, 會(huì)產(chǎn)生二義性。為了解決二義性, 引入了虛基類。1) 如果虛

36、基類中定義有帶形參的構(gòu)造函數(shù), 并且沒(méi)有定義默認(rèn)形式的構(gòu)造函數(shù), 則整個(gè)繼承結(jié)構(gòu)中, 所有直接或間接的派生類都必須在構(gòu)造函數(shù)的成員初始化表中列出對(duì)虛基類構(gòu)造函數(shù)的調(diào)用, 以初始化在虛基類中定義的數(shù)據(jù)成員。2) 建立一個(gè)對(duì)象時(shí), 如果這個(gè)對(duì)象中含有從虛基類繼承來(lái)的成員 , 則虛基類的成員就是由最遠(yuǎn)派生類的構(gòu)造函數(shù)通過(guò)調(diào)用虛基類的構(gòu)造函數(shù)進(jìn)行初始化的。該派生類的其她基類對(duì)虛基類構(gòu)造函數(shù)的調(diào)用都自動(dòng)被忽略。3) 若同一層次中同時(shí)包含虛基類與非虛基類, 應(yīng)先調(diào)用虛基類的構(gòu)造函數(shù), 再調(diào)用非虛基類的構(gòu)造函數(shù), 最后調(diào)用派生類的構(gòu)造函數(shù)。4、 8-4、 11 ACCB4、 12Constructor B1

37、 、Constructor B2Constructor A 3214 13主食=bread副食=steak4 140,0,00,1,03,6,94 15Constructor B1Constructor B2Constructor B3Constructor A124,34 1644、17(1,2)5,6(6,9)4、18class baselclass base2class level2class base2class levellclass toplevel4、19電#include <iostream> using namespacestd;#include <ioma

38、nip>class tablepublic :table( int p, int q)i = p;j = q;void ascii( void );protected :int i, j;void table二ascii()int k = 1;for (; i <= j; i+)cout << setw( 4) << i <<" " << ( char)i;if (k)% 12 = 0)cout <<"n"k+;cout <<"n"class der_

39、table: public tablepublic :der_table( int p, int q, char *m):table(p,q).c = m;void print();protected :char *c;void der_table二print().cout << c <<"n"table:ascii();int main()der_table ob( 'a' , 'z' , "ASCII value-char" );ob 、print();return 0;-4、20#includ

40、e <iostream> using namespacestd;#include <iomanip>class area_tected :double height;double width;public :area_c1( double r, double s)height = r;width = s; virtual double area() =0;class rectangle : public area_c1public :rectangle( double r, double s):area_c1(r, s) virtual double are

41、a();double rectangle二area() return height * width;class isosceles : public area_c1public :isosceles( double r, double s):area_c1(r, s) virtual double area();double isosceles二area() return (height * width)/ 2; int main()rectangle r(10, 5);isosceles i(4, 6);area_c1 *a;a = &r;cout<<"矩形的面

42、積就是:"<< a->area() << endl;a = &i;cout <<"三角形的面積就是:"<< a->area() <<endl;return 0;上4、21#include <iostream> using namespacestd;#include <iomanip>class Time public : Time( int h, int m, int s) hours = h;minutes = m; seconds = s; void dis

43、play。<< seconds cout << ”出生時(shí)間:"<< hours << "時(shí)"<< minutes <<<< "秒"<< endl; protected :int hours, minutes, seconds; ;class Date public :Date( int m, int d, int y) month = m;day = d;year = y;void display。cout <<"出生年月:&q

44、uot;<< year << "年"<< month << "月"<< day <<"日"<< endl;protected :int month, day, year;;class Birthtime : public Time, public Datepublic :Birthtime( char name口, int m, int d, int y, int h, int mi, int s): Time(h, mi, s), Date(m, d

45、, y)strcpy(Childname, name);void showName()cout <<"我的名字就是:"<< Childname << endl;private :char Childname 25;int main()Birthtime b( "xiaoming" , 3, 6, 2012, 11, 12, 42);b 、showName();b 、Time:display();b 、Date:display();return 0;-4、22#include <iostream> using

46、 namespacestd;#include <iomanip>class personprotected :char number 25;char name 25;public :person( char num, char na)strcpy(number, num);strcpy(name, na);void showName() cout <<"編號(hào) :" << number << " 姓名 :" << name;class student : public personprivate

47、:int classNumber, score;public :student( char num, char na, int cNumber, int sc):person(num, na)classNumber = cNumber;score = sc;void show()showName();cout <<" 班號(hào) :" << classNumber << " 成績(jī) :" << score << endl;class teacher : public personprivate :cha

48、r title 25, department 25;public :teacher( char num, char na, char tit, char depart):person(num, na)strcpy(title, tit);strcpy(department, depart);void show()showName();cout <<"職稱:"<< title <<"部門(mén):"<< department << endl;C +理五章習(xí)題1.什么就是靜態(tài)聯(lián)編?什么就是動(dòng)態(tài)聯(lián)編?靜態(tài)聯(lián)編

49、就是指系統(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)性稱為編譯時(shí)多態(tài)性,也稱靜態(tài)多態(tài)性。編譯時(shí)多態(tài)性就是 通過(guò)函數(shù)重載與模板實(shí)現(xiàn)的。動(dòng)態(tài)聯(lián)編所支持的多態(tài)性稱為運(yùn)行時(shí)多態(tài)性,也稱動(dòng)態(tài)多態(tài)性。就是通過(guò)虛函數(shù) 來(lái)實(shí)現(xiàn)的。2 .簡(jiǎn)述運(yùn)算符重載規(guī)則。a) C+中絕大部分的運(yùn)算符允許重載。b) C+只能對(duì)已有的C+!算符進(jìn)行重載。c) 運(yùn)算符重載就是針對(duì)新類型數(shù)據(jù)的實(shí)際需要,對(duì)原有運(yùn)算符進(jìn)行適當(dāng)?shù)母脑焱瓿?。?yīng)與原有的功能相類似。d) 重載不能改變運(yùn)算符的操作對(duì)象的個(gè)數(shù)。e) 重載

50、不能改變運(yùn)算符原有的優(yōu)先級(jí)。f)不能改變?cè)械慕Y(jié)合特性。參數(shù)至少應(yīng)有一個(gè)就是類對(duì)象。g)h) 重載函數(shù)可以就是普通函數(shù), 也可以就是類的成員函數(shù), 也可以就是類的友元函數(shù)。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è)普通類型運(yùn)算, 必須重載為友元。c) 調(diào)用方式不同。d) 一般, 雙目運(yùn)算符用友元 ,單目運(yùn)算符用成員。如果操作數(shù)有隱式類

51、型轉(zhuǎn)換, 則必須用友元。1. 什么就是虛函數(shù)?虛函數(shù)與函數(shù)重載有哪些相同點(diǎn)與不同點(diǎn)?虛函數(shù)就就是在基類中被關(guān)鍵字virtual 說(shuō)明 , 并在派生類中重新定義的函數(shù)。函數(shù)名都相同。重載函數(shù)的參數(shù)個(gè)數(shù)或參數(shù)類型必須有所不同。虛函數(shù)要求函數(shù)名, 返回類型 ,參數(shù)個(gè)數(shù), 參數(shù)的類型與順序與基類中的虛函數(shù)原型完全相同。1. 什么就是純虛函數(shù)?什么就是抽象類?純虛函數(shù)就是一個(gè)在基類中說(shuō)明的虛函數(shù), 它在該基類中沒(méi)有定義, 但要求在它的派生類中根據(jù)需要對(duì)它進(jìn)行定義, 或仍說(shuō)明為純虛函數(shù)。如果一個(gè)類至少有一個(gè)純虛函數(shù), 那么就稱這個(gè)類為抽象類。7-12 DAADCC13、不對(duì),參數(shù)個(gè)數(shù)必須一樣14、7615

52、、This is c+book 、第一個(gè)字符:T第16個(gè)字符:、第26個(gè)字符:數(shù)組下標(biāo)超界!16、m=1 5千米17、#include <iostream> using namespacestd;class twoDArrayint a 2 3;public : twoDArray()for (int i = 0; i < 2; i +)for ( int j = 0; j <3; j +)aij =5;twoDArray( int b 3)for (int i = 0; i < 2; i +)for ( int j = 0; j <3; j +)aij =

53、 bij;void show();twoDArrayoperator +(twoDArray n);twoDArrayoperator -(twoDArray n);void twoDArray:show()for ( int i = 0; i < 2; i +)for ( int j = 0; j <3; j +)cout << aij;cout << endl;twoDArray twoDArray: operator +(twoDArray n)twoDArray temp;for ( int i = 0; i < 2; i +)for ( in

54、t j = 0; j <3; j +)temp 、 aij = aij + n、 aij;return temp;twoDArray twoDArray: operator -(twoDArray n)twoDArray temp;for ( int i = 0; i < 2; i +)for ( int j = 0; j <3; j +)temp 、 aij = aij - n、 aij;return temp;int main()int a 2 3;for (int i = 0; i < 2; i +)for (int j = 0; j <3; j +)cin

55、 >> aij;twoDArray a1, a2(a), total, sub;total = a1 + a2;sub = a1 - a2;total 、show();sub 、show();return 0;上18、#include <iostream> using namespacestd;class twoDArray int a 2 3;public : twoDArray()for (int i = 0; i < 2; i +) for (int j = 0; j <3; j +)aij =5; twoDArray( int b 3) for (i

56、nt i = 0; i < 2; i +) for (int j = 0; j <3; j +)aij = bij; void show();friend twoDArrayoperator +(twoDArray m, twoDArray n);friend twoDArrayoperator -(twoDArray m, twoDArray n);void twoDArray二show() for (int i = 0; i < 2; i +)for (int j = 0; j <3; j +)cout << aij;cout << endl;twoDArray operator +(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論