




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C+面向?qū)ο蟪绦蛟O(shè)計教程課后題答案1.1 什么是面向?qū)ο蟪绦蛟O(shè)計?面向?qū)ο蟪绦蛟O(shè)計是一種新的程序設(shè)計范型. 這種范型的主要特征是:程序=對象+消息面向?qū)ο蟪绦虻幕驹厥菍ο?。主要結(jié)構(gòu)特點是:第一,程序一般由類的定義和類的使用兩部分組成;第二,程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實現(xiàn)的。1.2 什么是對象?什么是類?對象與類之間的關(guān)系是什么?對象是描述其屬性的數(shù)據(jù)以及對這些數(shù)據(jù)施加的一組操作封裝在一起構(gòu)成的統(tǒng)一體。類就是具有相同的數(shù)據(jù)和相同的操作的一組對象的集合,也就是說,類是對具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的一類對象的描述。類和對象之間的關(guān)系是抽象和具體的關(guān)系。類是多個對象進行綜合抽象的結(jié)果
2、,一個對象是類的一個實例。1.3 現(xiàn)實世界中的對象有哪些特征?請舉例說明?,F(xiàn)實世界中的對象具有以下特征:1) 每一個對象必須有一個名字以區(qū)別于其他對象;2) 用屬性來描述對象的某些特征;3) 有一組操作,每組操作決定對象的一種行為;4) 對象的行為可以分為兩類:一類是作用于自身的行為,另一類是作用于其他對象的行為。例如一個教師是一個對象。每個教師對象有自己的名字來和別的教師區(qū)別。教師具有編號,姓名,年齡,職稱,專業(yè)等屬性。教師擁有走路,吃飯,授課等行為操作。走路,吃飯是作用于自身的行為,授課是作用于其他對象的行為。1.4 什么是消息?消息具有什么性質(zhì)?一個對象向另一個對象發(fā)出的請求成為“消息”
3、。消息具有以下3 個性質(zhì):1) 同一個對象可以接收不同形式的多個消息,做出不同的相應(yīng);2) 相同形式的消息可以傳遞給不同的對象,所做出的響應(yīng)可以是不同的;3) 對消息的響應(yīng)并不是必須的,對象可以響應(yīng)消息,也可以不響應(yīng)。1.5 什么是抽象和封裝?請舉例說明。抽象是將有關(guān)事物的共性歸納、集中的過程。例如: 把所有具有大學(xué)生學(xué)籍的人歸為一類,成為“大學(xué)生”, 這就是一個抽象。封裝是指把數(shù)據(jù)和實現(xiàn)操作的代碼集中起來放在對象內(nèi)部,并盡可能隱藏對象的內(nèi)部細節(jié)。例如:每一臺洗衣機都有出廠日期、機器編號等屬性,也有啟動、暫停、選擇等操作。 人們在使用洗衣機的時候只需要按下對應(yīng)的按鈕,而不用關(guān)心具體的內(nèi)部實現(xiàn)。
4、這就是封裝。1.6 什么是繼承?請舉例說明。繼承就是允許派生類使用基類的數(shù)據(jù)和操作,同時, 派生類還可以增加新的操作和數(shù)據(jù)。例如:哺乳動物是一種熱血、有毛發(fā)、用奶哺育幼崽的動物;狗是有犬牙、食肉、特定的骨骼結(jié)構(gòu)、群居的哺乳動物。狗就繼承了哺乳動物。1.7 若類之間具有繼承關(guān)系,則他們之間具有什么特征?若類之間具有繼承關(guān)系,則他們之間具有下列幾個特征:1) 類間具有共享特征(包括數(shù)據(jù)和操作代碼的共享);2) 類間具有差別或新增部分(包括非共享的數(shù)據(jù)和操作代碼);3) 類具有層次結(jié)構(gòu)。1.8 什么是單繼承、多繼承?請舉例說明。單繼承是指每個派生類只直接繼承了一個基類的特征。例如狗繼承自哺乳動物。多
5、繼承是指多個基類派生出一個派生類的繼承關(guān)系。比如玩具車同時繼承自玩具和車。1.9 什么是多態(tài)?請舉例說明。多態(tài)是指不同的對象收到相同的消息時執(zhí)行不同的操作。例如,有一個窗口類對象,還有一個棋子類對象。當我們發(fā)出“移動”消息時,兩個對象的行為不同。1.10 面向?qū)ο蟪绦蛟O(shè)計的主要優(yōu)點是什么?1. 可提高程序的重用性;2. 可控制程序的復(fù)雜性;3. 可改善程序的可維護性;4. 能夠更好地支持大型程序設(shè)計;5. 增強了計算機處理信息的范圍;能夠很好地適應(yīng)新的硬件環(huán)境。2.1簡述C+勺主要特點1.1 C+是C的超集,保持與C的兼容。1.2 保持了 C的簡潔、高效和接近匯編語言等特點,并對 C的功能作了
6、不少擴充。用C+S寫的程序比C更安全,可讀性更好,代碼結(jié)構(gòu)更為 合理。1.3 程序質(zhì)量高。1.4 增加了面向?qū)ο髾C制。2.2#include <iostream> using namespacestd;int main()int a, b, d, min;cout << "Enter two numbers:" ;cin >> a >> b;min = a > b ? b : a;for (d = 2; d < min; d+)if (a % d) =0) && (b % d ) =0) break
7、;if (d = min) cout << "No common denominators" << endl;return 0;cout << "The lowest common denominator is" << d << endl; return 0;召2.3 有效2.4 沒有函數(shù)聲明;函數(shù)定義沒有寫返回值類型。2.5 (1)等價,函數(shù)聲明可以省略參數(shù)的名字。(2)不等價,第二個的函數(shù)定義不能省略參數(shù)的名字。2.6 -2.10 CDAAB2.11 -2.15 ACBDC2.16-2.17
8、 DC2.181012.1910 102.2010202.21舉例說明可以使用const替代#61ne以消除#de巾ne的不安全性。電#include <iostream>using namespacestd;int main()int a = 1;#define T1 a+a#define T2 T1-T1cout <<"T2 is "<< T2 <<endl;return 0;心上面這個程序,初看應(yīng)該輸出 T2 is 0但是實際上,得出T2 is 2如果把#de巾ne換成const ,則可以輸出想要的結(jié)果。2.22用動態(tài)分
9、配空間的方法, 配的空間中。計算Fibonacci數(shù)列的前20項,并存儲到動態(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ù),輸出一個數(shù)的二次方根。#include <iostream> using namespacestd;double sroot( int num) return ( do
10、uble )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 解決百錢問題。將一元人民幣換成1、2、5分的硬幣,有多少種換法?#include <iostream> using namespacestd;int main()int num = 0; /總共換法的總數(shù)。初始化為0。for (int i = 0; i
11、<=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 « ”個« "2 分,,«j « ”個« "5 分"« k « ”個« endl;)if (i +2*j + 5*k) > 100)(break;)cout
12、171; num « endl;return 0;)2.25 輸入兩個整數(shù),按由小到大的順序輸出。要求使用變量的引用。r»L_include <iostream> using namespacestd;void swap( int &a, int &b)(a = a + b;b = a - b;a = a - b;)int main()(int a, b;cin » a »b;if (a > b)( swap(a, b);)cout « a «« b « endl;return 0
13、;)2.26 用二分法求解 f(x)=0的根。#include <iostream> using namespacestd;double Fun( double x)return 35*x + 25; / 假設(shè) f(x)=35x+25int main()double a, b;cin >> a;if (Fun(a) = 0) cout << "x = " << a << endl;return 0; docin >> b; while (Fun(a) * Fun(b) >=0);if (Fun(b
14、) = 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) = 0)cout << "x = " << (a + b)/2 << endl;return 0;if (Fun(a) * Fun(a + b)/2) < 0)b = (a + b)/2;if (Fun(b) * Fun(a + b)/2) <
15、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ù),它主要用于為對象分配空 問,進行初始化。構(gòu)造函數(shù)的名字必須與類名相同,而不能由用戶任意命名。它可以有任意類型的 參數(shù),但不能具有返回值類型。析構(gòu)函數(shù)通常用于執(zhí)行一些清理任務(wù),如釋放分配給對象的內(nèi)存空間等。析構(gòu)函數(shù)名與類名相同,但它前面必須加一個波浪號。不能有返回值,也不能有 參數(shù)。所謂對象數(shù)組,是指每一個數(shù)組元素都是對象的
16、數(shù)組。3.4 什么是 this 指針?它的主要作用是什么?C+為成員函數(shù)提供了一個名為this的指針,這個指針稱為自引用指針。每當創(chuàng)建一個對象時,系統(tǒng)就把this 指針初始化為指向該對象。一個類的所有對象合用一份成員函數(shù),this 指針可以幫助對象辨別出當前調(diào)用的是自己的那個對象的數(shù)據(jù)成員和函數(shù)。3.5 友元函數(shù)有什么作用?友元函數(shù)可以在類的外部訪問類的私有成員或保護成員。3.6( 1)聲明并定義了P2,P3,并用默認無參構(gòu)造函數(shù)初始化。(2)聲明并定義了 P2,并調(diào)用Point類的拷貝構(gòu)造函數(shù)用P1對P2進行初始 化。(3)聲明并定義了 P2,并調(diào)用Point類的拷貝構(gòu)造函數(shù)用P1對P2進行
17、初始 化。(4)調(diào)用拷貝構(gòu)造函數(shù),將P1的成員值賦值給P4的成員。3.7 -3.10 BCCB3.11- 3.15 BAABA3.16-3.17 BB3.183.#10,2030,4850,6870,8090,1611,1203.19Constructing101003.20Destructing3objects in existence4objects in existence after allocation3.213objects in existence after deletionCounting at0Counting at93.233.243.25Default construc
18、tor called.Default constructor called.Default constructor called.Construcotor:a=1,b=2Construcotor:a=3,b=4Construcotor:a=5,b=6Con.Copy con.default.Copy con.A=5B=14A=9B=145,722.253.27ConstructingConstructingA=5B=15A=10B=15DestructingDestructing3.27void pintStu();函數(shù)只有聲明,沒有定義。age是私有成員,不能用對象直接調(diào)用。3.28void
19、 printStu() 和 void setSno(int s) 沒有加限定符 Student:void setAge(int a)在類中沒有聲明3.29構(gòu)造函數(shù)不能定義為私有。否則無法創(chuàng)建對象。3.30 下面是一個計算器類的定義,請完成該類成員函數(shù)的實現(xiàn)。class counter public :/給原始值加1 /給原始值減1/取的計數(shù)器值 /顯示計數(shù)counter( int number); void increment。; void decrement。; int getvalue();int print();private :int value;;counter二counter(in
20、t number)value = number;void counter:increment()+value;void counter二decrement。-value;int counter二getvalue()return value;int counter二print()cout << value <<endl;return value;3.31 根據(jù)注釋語句提示,實現(xiàn)類 Date的成員函數(shù)#include <iostream> using namespacestd;class Date public :void printDate();void se
21、tDay( int d);void setMonth( int m);void setYear( int y);private :int day, month, year;; void Date:printDate()cout <<"今天是"<< year << "年"<< month << "月"<< day << "日"<<endl;void Date二setDay( int d)day = d;void Date:
22、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.printDate();return 0; 召3.32 建立類cylinder, cylinder的構(gòu)造函數(shù)被傳遞了兩個double值,分別表示圓柱體的半徑和高度。用類cylinder計算圓柱體的體積,并存儲在一個double變量中。在類cylinder中包含一個成員函數(shù)vol,用來顯示
23、每個cylinder對象的體積。電const int PI = 3.14;class cylinder private :double radius, height, volume;public :cylinder( int rad, int hei);double getVolume();void vol();cylinder二cylinder( int rad, int hei)radius = rad;height = hei;double cylinder二getVolume()volume = PI * radius * radius *height; return volume;v
24、oid cylinder:vol()cout <<”圓柱體的體積是:"<< volume <<endl;3.33 構(gòu)建一個類book,其中包含有兩個私有數(shù)據(jù)成員qu和price ,將qu初始化為15,將price初始化為qu的10倍,建立一個有 5個元素的數(shù)組對象。顯示每個對象數(shù)組元素的 qu*price 值。class bookprivate :int qu, price;public :book( int qu); int mult();book:book( int q) if (q < 1 II q >5)qu =1;elsequ
25、 = 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.33,通過對象指針訪問對象數(shù)組,使程序以相反的順序顯示每個對象數(shù)組元素 的 qu*price 值。召class bookprivate :int qu, price;public :book( int qu); int mult();book:book( int q)i
26、f (q < 1 | 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;book *p = books;p +=4;for (int i = 0; i <5; i+) cout << p->mult() <<"-p; return 0;3.35 構(gòu)建一個類Stock,含字符數(shù)組stockcode口及整型數(shù)組成員quan、雙精度型數(shù)據(jù)成員 price。構(gòu)造函數(shù)含3個參數(shù):
27、字符數(shù)組 na口及q、p。當定義Stock的類對象時,將對象的第 一個字符串參數(shù)賦給數(shù)據(jù)成員stockcode,第2和第3個參數(shù)分別賦給quan、price。未設(shè)置第2和第3個參數(shù)時,quan的值為1000, price的值為8.98.成員函數(shù)print沒有形參,需使 用this指針,顯示對象數(shù)據(jù)成員的內(nèi)容。編寫程序顯示對象數(shù)據(jù)成員的值。#include <iostream> using namespacestd;class Stockprivate :char stockcode 25;int quan;double price;public :Stock( char na口,i
28、nt 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二print()cout << "stockcode: "<< this ->stockcode << " quan: " << this ->quan<< &q
29、uot;price: "<< this ->price << endl;int main()Stock stock1("600001" , 3000, 5.67);Stock stock2("600002");stock1.print();stock2.print();return 0;上3.36 編寫一個程序,已有若干學(xué)生的數(shù)據(jù),包括學(xué)號、姓名、成績,要求輸出這些學(xué)生的 數(shù)據(jù)并計算出學(xué)生人數(shù)和平均成績(要求將學(xué)生人數(shù)和總成績用靜態(tài)數(shù)據(jù)成員表示)。上#include <iostream>using na
30、mespacestd;class studentprivate :char name25, studentNo 10;int score;staticint sum;staticint totalScore;public :student( char na, char stuNo, int sc);void show();static void showTotal();student:student( char na, char stuNo, int sc) strcpy(name, na);strcpy(studentNo, stuNo);score = sc;+sum;totalScore
31、 += sc;void student:show() cout <<" 姓名:" << name <<endl;cout <<" 學(xué)號:" << studentNo << endl;cout <<" 成績:" << score << endl;void student:showTotal()cout <<" 總?cè)藬?shù):" << sum << endl;cout <<
32、;" 平均成績:" << ( double )totalScore/sum <<endl;int student:sum =0;int student:totalScore =0;int main()student s1("張無忌","111254",75);student s2("李莫愁","254114",60);student s3("小龍女","112587",88);s1.show();s2.show();s3.show(
33、);student:showTotal();return 0;4.1 有哪幾種繼承方式?每種方式的派生類對基類成員的繼承性如何?公有繼承, 私有繼承和保護繼承?;惖乃接谐蓡T,無論哪種繼承方式都不能訪問。公有繼承不改變基類的公有和保護成員的訪問限制。私有繼承將基類的公有和保護成員都變成私有。保護繼承將基類的公有和保護成員都變成保護。4.2 派生類能否直接訪問基類的私有成員?若否,應(yīng)如何實現(xiàn)?不能。 可以在基類里添加一個公有成員函數(shù)來訪問私有成員,派生類就能繼承這個公有成員函數(shù),實現(xiàn)對基類私有成員的訪問。4.3 保護成員有哪些特性?保護成員以公有方式或私有方式繼承后的訪問特性如何?保護成員只能被
34、本類或本類的派生類所訪問,在類或派生類外是不能被訪問的。后面一問見第一題的答案。4.4 派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序是怎樣的?構(gòu)造函數(shù)是先執(zhí)行父類的構(gòu)造函數(shù),再執(zhí)行類中其他類對象的構(gòu)造函數(shù),再執(zhí)行本類的構(gòu)造函數(shù)。如果同級有多個構(gòu)造函數(shù),則按聲明順序執(zhí)行。析構(gòu)函數(shù)與構(gòu)造函數(shù)的執(zhí)行順序剛好相反。4.5 派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的構(gòu)造規(guī)則是怎樣的?派生類名(參數(shù)總表): 基類名(參數(shù)總表)派生類新增數(shù)據(jù)成員的初始化語句派生類中的析構(gòu)函數(shù)與基類無關(guān)。4.6 什么是多繼承?多繼承時,構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行順序是怎樣的?多繼承是指一個類同時繼承自多個不同的基類。執(zhí)行順序同4.44.7 在類的派生中
35、為何要引入虛基類?虛基類構(gòu)造函數(shù)的調(diào)用順序是如何規(guī)定的?如果一個類有多個直接基類,而這些直接基類又有一個共同的基類, 則在最底層的派生類中會保留這個簡介的共同基類數(shù)據(jù)成員的多份同名成員。在訪問這些同名成員的時候,會產(chǎn)生二義性。為了解決二義性,引入了虛基類。1) 如果虛基類中定義有帶形參的構(gòu)造函數(shù),并且沒有定義默認形式的構(gòu)造函數(shù),則整個繼承結(jié)構(gòu)中,所有直接或間接的派生類都必須在構(gòu)造函數(shù)的成員初始化表中列出對虛基類構(gòu)造函數(shù)的調(diào)用,以初始化在虛基類中定義的數(shù)據(jù)成員。2) 建立一個對象時,如果這個對象中含有從虛基類繼承來的成員, 則虛基類的成員是由最遠派生類的構(gòu)造函數(shù)通過調(diào)用虛基類的構(gòu)造函數(shù)進行初始化
36、的。該派生類的其他基類對虛基類構(gòu)造函數(shù)的調(diào)用都自動被忽略。3) 若同一層次中同時包含虛基類和非虛基類,應(yīng)先調(diào)用虛基類的構(gòu)造函數(shù),再調(diào)用非虛基類的構(gòu)造函數(shù),最后調(diào)用派生類的構(gòu)造函數(shù)。4.8 -4.11 ACCB4.12Constructor B1.Constructor B2.Constructor A.3214.13主食=bread副食=steak4.140,0,00,1,03,6,94.15Constructor B1.Constructor B2.Constructor B3.Constructor A.124,34.1644.17(1,2)5,6(6,9)4.18class base1c
37、lass base2class level2class base2class level1class toplevel4.19召#include <iostream> using namespacestd;#include <iomanip>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) <&
38、lt; i <<" " << ( char)i;if (k)% 12 = 0)cout <<"n"k+;cout <<"n" class der_table: public table.public :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"ta
39、ble:ascii();int main()der_table ob( 'a' , 'z' , "ASCII value-char" );ob.print();return 0;4.20電#include <iostream> using namespacestd;#include <iomanip>class area_c1protected :double height;double width;public :area_c1( double r, double s).height = r;width = s; v
40、irtual double area() =0;class rectangle : public area_c1public :rectangle( double r, double s):area_c1(r, s) virtual double area(); double rectangle二area() return height * width;class isosceles : public area_c1public :isosceles( double r, double s):area_c1(r, s) virtual double area(); double isoscel
41、es二area() return (height * width)/ 2;int main()rectangle r(10, 5);isosceles i(4, 6);area_c1 *a;a = &r;cout<<"矩形的面積是:"<< a->area() << endl;a = &i;cout <<”三角形的面積是:"<< a->area() <<endl;return 0;上4.21電#include <iostream>using namespa
42、cestd;#include <iomanip>class Timepublic :Time( int h, int m, int s)hours = h;minutes = m;seconds = s;void display。cout << "出生時間:"<< hours << "時"<< minutes << "分"<< seconds<< "秒"<< endl;protected :int hours
43、, minutes, seconds;class Date public :Date( int m, int d, int y)month = m;day = d;year = y;void display。cout <<"出生年月:"<< year << "年"<< month << "月"<< day <<"日"<< endl;protected :int month, day, year;class Birthti
44、me : 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, y)strcpy(Childname, name);void showName()cout <<"我的名字是:"<< Childname << endl;private :char Childname 25;int main()Birthtime b( "xiaoming
45、" , 3, 6, 2012, 11, 12, 42);b.showName();b.Time:display();b.Date二display。;return 0;A4.22#include <iostream> using namespacestd;#include <iomanip> class person protected :char number 25;char name25;public :person( char num口, char na口)strcpy(number, num);strcpy(name, na); void showNam
46、e() cout <<"編號:"<< number << " 姓名:"<< name;class student : public person private :int classNumber, score;public :student( char num口, char na口, int cNumber, int sc):person(num, na) classNumber = cNumber;score = sc; void show()showName();cout <<"
47、班號:"<< classNumber << " 成績:"<< score << endl;class teacher : public personprivate :char 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 &
48、lt;<"職稱:"<< title <<"部門:"<< department << endl;C +理五章習(xí)題1.什么是靜態(tài)聯(lián)編?什么是動態(tài)聯(lián)編?靜態(tài)聯(lián)編是指系統(tǒng)在編譯時就決定如何實現(xiàn)某一動作。動態(tài)聯(lián)編是指系統(tǒng)在運行時動態(tài)實現(xiàn)某一動作。1 .編譯時的多態(tài)性與運行時的多態(tài)性有什么區(qū)別?他們的實現(xiàn)方式有什么 不同?靜態(tài)聯(lián)編支持的多態(tài)性稱為編譯時多態(tài)性,也稱靜態(tài)多態(tài)性。編譯時多態(tài)性是通 過函數(shù)重載和模板實現(xiàn)的。動態(tài)聯(lián)編所支持的多態(tài)性稱為運行時多態(tài)性,也稱動態(tài)多態(tài)性。是通過虛函數(shù)來 實現(xiàn)的。2 .簡述運算符重
49、載規(guī)則。a) C+中絕大部分的運算符允許重載。b) C+只能對已有的C+!算符進行重載。c) 運算符重載是針對新類型數(shù)據(jù)的實際需要,對原有運算符進行適當?shù)母脑焱瓿?。?yīng)與原有的功能相類似。d) 重載不能改變運算符的操作對象的個數(shù)。e)重載不能改變運算符原有的優(yōu)先級。不能改變原有的結(jié)合特性。f)g) 參數(shù)至少應(yīng)有一個是類對象。h) 重載函數(shù)可以是普通函數(shù),也可以是類的成員函數(shù),也可以是類的友元函數(shù)。i) 一般用于類對象的運算符除了賦值運算符都要重載。1. 友元運算符函數(shù)和成員運算符函數(shù)有什么不同?a) 對于雙目運算符,成員運算符重載含有一個參數(shù),友元重載含有兩個參數(shù);對于單目運算符,成員重載沒有參
50、數(shù),友元重載有一個參數(shù)。b) 雙目運算符一般可以被重載為友元或成員。但是如果將一個對象和一個普通類型運算,必須重載為友元。c) 調(diào)用方式不同。d) 一般,雙目運算符用友元,單目運算符用成員。如果操作數(shù)有隱式類型轉(zhuǎn)換,則必須用友元。1. 什么是虛函數(shù)?虛函數(shù)與函數(shù)重載有哪些相同點與不同點?虛函數(shù)就是在基類中被關(guān)鍵字virtual 說明,并在派生類中重新定義的函數(shù)。函數(shù)名都相同。重載函數(shù)的參數(shù)個數(shù)或參數(shù)類型必須有所不同。虛函數(shù)要求函數(shù)名,返回類型,參數(shù)個數(shù),參數(shù)的類型和順序與基類中的虛函數(shù)原型完全相同。2. 什么是純虛函數(shù)?什么是抽象類?純虛函數(shù)是一個在基類中說明的虛函數(shù),它在該基類中沒有定義,但
51、要求在它的派生類中根據(jù)需要對它進行定義,或仍說明為純虛函數(shù)。如果一個類至少有一個純虛函數(shù),那么就稱這個類為抽象類。7-12 DAADCC13.不對,參數(shù)個數(shù)必須一樣14.7615.This is c+book.第一個字符:T第16個字符:.第26個字符:數(shù)組下標超界!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
52、 =5;twoDArray( int b 3)for (int i = 0; i < 2; i +)for ( int j = 0; j <3; j +)aij = 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
53、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;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;
54、 int main()int a 2 3;for (int i = 0; i < 2; i +)for (int j = 0; j <3; j +)cin >> 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
55、= 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 +)a皿=b皿; 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 +(twoDArray m, twoDArray n)twoDArray temp;for (int i = 0; i < 2; i +)for (int j = 0; j <3; j +)temp.aij = m.aij + n.aij;return
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中數(shù)學(xué)省級課題申報書
- 寧波課題立項申報書
- 生物小課題立項申報書
- 藝術(shù)規(guī)劃課題申報書范本
- 風(fēng)濕課題申報書
- 賣車位定金合同范本
- 行為習(xí)慣養(yǎng)成課題申報書
- 合同范本文化傳播
- 課題成果申報書范文
- 精準教學(xué) 課題申報書
- 三年級道德與法治3.我很誠實 說課一等獎
- 預(yù)防花粉過敏課件
- JJF1059.1測量不確定度評定培訓(xùn)講演稿
- 緩解抑郁和焦慮的心理技巧
- 疼痛科門診小針刀療法知情同意書
- 質(zhì)量驗廠報告
- 肝門膽管惡性腫瘤的護理查房
- 燒傷病人查房版
- 《發(fā)行債券》課件
- 校企合作模式下的高職院校人才培養(yǎng)研究
- 二房東可行性方案計劃書
評論
0/150
提交評論