版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向?qū)ο蟪绦蛟O(shè)計(jì)總復(fù)習(xí)(2023_夏)復(fù)習(xí)之一、對(duì)照書本(或上課課件)上,搞懂有關(guān)概念【第0-1章】1.面向?qū)ο蟪绦蛟O(shè)計(jì)是不同于傳統(tǒng)程序設(shè)計(jì)的一種新的程序設(shè)計(jì)范型。它對(duì)減少軟件的復(fù)雜性,改善其重用性和維護(hù)性,提高軟件的生產(chǎn)效率,有著十分重要的意義。因此面向?qū)ο蟮某绦蛟O(shè)計(jì)被認(rèn)為是程序設(shè)計(jì)方法學(xué)的一場(chǎng)實(shí)質(zhì)性的革命(在導(dǎo)學(xué)中)。2.面向?qū)ο?O-O)程序設(shè)計(jì)是一種新的程序設(shè)計(jì)范型。這種范型的重要特性是:程序=對(duì)象+消息面向?qū)ο蟪绦虻闹匾Y(jié)構(gòu)特點(diǎn)是:第一,程序一般由類的定義和類的使用兩部分組成;第二,程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn)的,對(duì)象接受到后,啟動(dòng)有關(guān)方法完畢相應(yīng)操作。3.現(xiàn)實(shí)世界中,對(duì)象一般可以表達(dá)為:屬性+行為現(xiàn)實(shí)世界中的對(duì)象,具有以下特性:(1)每一個(gè)必須有一個(gè)名字以區(qū)別于其他對(duì)象;(2)用屬性來描述對(duì)象的某些特性;(3)有一組操作,每組操作決定對(duì)象的一種行為;(4)對(duì)象的行為可以分為兩類:一類是作用于自身的行為,另一類是作用于其他對(duì)象的行為。4.在現(xiàn)實(shí)世界中,類是一組具有相同屬性和行為的對(duì)象的抽象。類與對(duì)象的關(guān)系是抽象和具體的關(guān)系。在C++面向?qū)ο蟮某绦蛟O(shè)計(jì)中,把類中的屬性稱為數(shù)據(jù)(數(shù)據(jù)成員),類中的操作是用函數(shù)(函數(shù)成員)來實(shí)現(xiàn)的。5.面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特性:抽象性、封裝性、繼承性和多態(tài)性(1).抽象是通過特定的實(shí)例(對(duì)象)抽取共同性質(zhì)后形成概念的過程。(2).在面向?qū)ο蟪绦蛟O(shè)計(jì)中,封裝是指把數(shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來放在對(duì)象內(nèi)部,并盡也許隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。(3).繼承機(jī)制允許派生類繼承基類的數(shù)據(jù)和操作(即數(shù)據(jù)成員和成員函數(shù)),也就是說,允許派生類使用基類的數(shù)據(jù)和操作。同時(shí)派生類還可以增長(zhǎng)新的操作和數(shù)據(jù)。從繼承源上分,繼承分為單繼承和多繼承。(4).面向?qū)ο笙到y(tǒng)的多態(tài)性是指不同的對(duì)象收到相同的消息時(shí)產(chǎn)生多種不同的行為方式。如可以有同名函數(shù)【第2章】6.簡(jiǎn)樸的C++程序例2.1計(jì)算兩個(gè)整數(shù)之和sum.cpp這兩行也可用一行代替:#include<iostream.h>#include<iostream>這兩行也可用一行代替:#include<iostream.h>usingnamespacestd;intmain()//主函數(shù){intx,y,sum;//定義三個(gè)整型變量cout<<"輸入二個(gè)數(shù):"<<'\n';//界面:提醒用戶輸入二個(gè)數(shù)cin>>x;//從鍵盤輸入變量x的值cin>>y;//從鍵盤輸入變量y的值sum=x+y;cout<<“x+y="<<sum<<'\n';//輸出return0;}C++新行(回車換行)'\n’或endl(ENDL的小寫)新的輸入/輸出:老:scanf新:cin是標(biāo)準(zhǔn)輸入流,在程序中用于代表標(biāo)準(zhǔn)輸入設(shè)備,即鍵盤。運(yùn)算符“>>”表達(dá)向右老:printf新:cout是標(biāo)準(zhǔn)輸出流,在程序中用于代表標(biāo)準(zhǔn)輸出設(shè)備,即屏幕。運(yùn)算符“<<”表達(dá)向左使用cin或cout進(jìn)行I/O操作時(shí),在程序頭中頭文獻(xiàn)#include<iostream.h>7.函數(shù)原型(函數(shù)聲明)(重點(diǎn))返回值類型函數(shù)名(參數(shù)表);例2.7intadd(inta,intb);intadd(int,int);使用在前,定義在后,要先聲明。若定義在前,使用在后,就可不必聲明。8.函數(shù)重載:C++中,只要函數(shù)的參數(shù)的類型不同,或者參數(shù)個(gè)數(shù)不同,或者二兼有之,幾個(gè)函數(shù)可以用相同的函數(shù)名。稱為函數(shù)重載9.C語言用函數(shù)malloc()和free()動(dòng)態(tài)分派內(nèi)存和釋放動(dòng)態(tài)分派的內(nèi)存。C++使用運(yùn)算符new和delete能更好、更簡(jiǎn)樸地進(jìn)行內(nèi)存的分派和釋放。10.引用(重點(diǎn))引用可為變量起別名,它重要用作函數(shù)參數(shù)以及函數(shù)的返回類型。引用有三種:(1)有變量的引用、(2)參數(shù)引用和(3)返回值引用。11.1、&取地址運(yùn)算符取西瓜皮2、*指針運(yùn)算符(間接訪問運(yùn)算符)挖西瓜馕【第3章】12.C++中說明(類的定義)類的一般形式為clsaa類名{[privat(yī)e:](可省略)私有段數(shù)據(jù)成員和成員函數(shù)protected:保護(hù)段數(shù)據(jù)成員和成員函數(shù)public:公有段數(shù)據(jù)成員和成員函數(shù)};成員函數(shù)的定義方式:第一種方式是在類定義中只給出成員函數(shù)的原形,而成員函數(shù)體在類的外部定義。第二種方式是將成員函數(shù)定義在類的內(nèi)部,即定義為內(nèi)置函數(shù)。(1)隱式定義(2)顯式定義13.類對(duì)象中成員的引用(使用、訪問都是同一個(gè)意思)不管是數(shù)據(jù)成員,還是成員函數(shù),只要是公有的,就可以被外部函數(shù)直接引用,引用的一般格式是:對(duì)象名.數(shù)據(jù)成員名和對(duì)象名.成員函數(shù)名(實(shí)參表)外部函數(shù)不能引用對(duì)象的私有成員總之:類成員的訪問屬性:類的公有成員不僅可以被類中成員函數(shù)訪問,還可以在類的外部通過類的對(duì)象進(jìn)行訪問。類的私有成員只能被類中成員函數(shù)訪問,不能在類的外部通過類的對(duì)象進(jìn)行訪問。14.構(gòu)造函數(shù)的特點(diǎn):(1)構(gòu)造函數(shù)的名字必須與類名相同,否則編譯程序?qū)阉?dāng)作一般的成員函數(shù)來解決。(2)構(gòu)造函數(shù)沒有返回值,在聲明和定義構(gòu)造函數(shù)時(shí),是不能說明它的類型的的,甚至說明為void類型也不行。(3)構(gòu)造函數(shù)也是成員函數(shù),與普通的成員函數(shù)同樣,構(gòu)造函數(shù)的函數(shù)體可寫在類體內(nèi),也可寫在類體外。(4)一般不提倡在構(gòu)造函數(shù)中加入與初始化無關(guān)的內(nèi)容(5)構(gòu)造函數(shù)一般聲明為公有成員。它不需要用戶來調(diào)用,而是在建立對(duì)象時(shí)自動(dòng)執(zhí)行的。(6)在實(shí)際應(yīng)用中,通常需要給每個(gè)類定義構(gòu)造函數(shù)。假如沒有給類定義構(gòu)造函數(shù),則編譯系統(tǒng)自動(dòng)地生成一個(gè)缺省的構(gòu)造函數(shù)。complex::complex(){}//不能帶任何參數(shù)。(7)定義構(gòu)造函數(shù)時(shí),也可以是不帶參數(shù)的。15.C++允許重載構(gòu)造函數(shù),這些構(gòu)造函數(shù)之間名字相同,而以它們所帶參數(shù)的個(gè)類或類型的不同而區(qū)分。帶默認(rèn)參數(shù)的構(gòu)造函數(shù)。16.對(duì)象的賦值和拷貝構(gòu)造函數(shù),其作用是,在建立新對(duì)象時(shí),使用一個(gè)已經(jīng)存在的對(duì)象去初始化這個(gè)新對(duì)象。piontp2(p1);17.析構(gòu)函數(shù)也是特殊成員函數(shù),用于釋放對(duì)象。(1)析構(gòu)函數(shù)與構(gòu)造函數(shù)名字相同,但它前面必須加一個(gè)波浪號(hào)(~)。(2)析構(gòu)函數(shù)沒有參數(shù),也沒有返回值,并且不能重載,因此在一個(gè)類中只能有一個(gè)析構(gòu)函數(shù)。(3)當(dāng)撤消對(duì)象時(shí),編譯系統(tǒng)會(huì)自動(dòng)地調(diào)用析構(gòu)函數(shù)。18.可以用類定義對(duì)象數(shù)組:類名數(shù)組名[元素個(gè)數(shù)];19.當(dāng)需要時(shí),可以用類定義對(duì)象指針。對(duì)象指針就是用于存放對(duì)象地址的變量類名*對(duì)象指針名;20.類的封裝性,使類只能通過成員函數(shù)來訪問私有成員。這是好事但也有一定的限制太死的感覺。能否開個(gè)小孔口,必要時(shí)作個(gè)破例,使外界函數(shù)、別的類的個(gè)別成員函數(shù)、甚致別的類的所有成員函數(shù)可訪問某個(gè)類的私有成員。這個(gè)方法稱為友元。21.友元涉及友元函數(shù)和友元類(1)友元函數(shù)分為:非成員函數(shù)作友元和別的類的成員函數(shù)作友元(2)友元類:在類定義時(shí),在類內(nèi)說明一個(gè)類(該類前面已定義),前加上friend表達(dá)該整個(gè)的一個(gè)類是本類的友元類。友元類的所有成員函數(shù)可以訪問它自己類私有成員又可本類的私有成員?!镜?章】22.派生類的定義基類:class基類名{類的內(nèi)容};聲明派生類:class派生類名:繼承方式基類名{//派生類新增的數(shù)據(jù)成員和函數(shù)成員};繼承方式可為公有繼承(用public)、私有繼承(用privat(yī)e或缺省)和保護(hù)繼承(用protected)23.基類成員在派生類中的訪問屬性(重點(diǎn))基類中的成員在公有派生類中的訪問屬性在私有派生類中的訪問屬性在保護(hù)派生類中的訪問屬性私有成員不可直接訪問不可直接訪問不可直接訪問公有成員公有私有保護(hù)保護(hù)成員保護(hù)私有保護(hù)24.派生類對(duì)基類成員的訪問規(guī)則(重點(diǎn))(1)私有繼承的訪問規(guī)則基類中的成員私有成員公有成員保護(hù)成員訪問方式內(nèi)部訪問對(duì)象訪問不可訪問不可訪問可訪問不可訪問可訪問不可訪問(2)公有繼承的訪問規(guī)則基類中的成員私有成員公有成員保護(hù)成員訪問方式內(nèi)部訪問對(duì)象訪問不可訪問不可訪問可訪問可訪問可訪問不可訪問(3)保護(hù)繼承的訪問規(guī)則基類中的成員私有成員公有成員保護(hù)成員訪問方式內(nèi)部訪問對(duì)象訪問不可訪問不可訪問可訪問不可訪問可訪問不可訪問25.派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)(1)派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)執(zhí)行順序無論何中派生,當(dāng)創(chuàng)建派生類對(duì)象時(shí),一方面執(zhí)行基類的構(gòu)造函數(shù),隨后再執(zhí)行派生類的構(gòu)造函數(shù);當(dāng)撤消派生類對(duì)象時(shí),則先執(zhí)行派生類的析構(gòu)函數(shù),隨后再執(zhí)行基類的析構(gòu)函數(shù)。(2).派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的構(gòu)造規(guī)則簡(jiǎn)樸的派生類的構(gòu)造函數(shù)一般格式為:派生類名(參數(shù)總表):基類名(參數(shù)表){派生類新增成員的初始化語句}其中基類構(gòu)造函數(shù)參數(shù),來源于派生類的構(gòu)造函數(shù)的參數(shù)總表,也可以用常數(shù)值。26.從多個(gè)類,派生出一個(gè)類,也即一個(gè)類從多個(gè)基類繼承稱為多重繼承。多重繼承的聲明格式如下:class派生類名:繼承方式1基類名1,...,繼承方式n基類名n{派生類新增的數(shù)據(jù)成員和成員函數(shù)};派生類繼承了基類1到基類n的所有數(shù)據(jù)成員和函數(shù)成員,其訪問屬性規(guī)則與單繼承情況同樣,多繼承可當(dāng)作單一繼承的擴(kuò)展。27.假如一個(gè)派生類有多個(gè)直接基類,而這些直接基類又有一個(gè)相同的基類,則在最低層的派生類中會(huì)保存這個(gè)間接的共同基類數(shù)據(jù)成員的多份同名成員。在訪問這些同名成員時(shí)會(huì)產(chǎn)生二義性,才考慮虛基類,虛基類在派生類中聲明的形式:class派生類名:virtual繼承方式基類名{//............};通過這樣的聲明后,當(dāng)基類通過多條派生途徑被一個(gè)派生類繼承時(shí),該派生類只繼承該基類一次,也就是說,基類成員無“副本”【第5章】28.編譯時(shí)的多態(tài)性與運(yùn)營(yíng)時(shí)的多態(tài)性靜態(tài)聯(lián)編(前期聯(lián)編)靜態(tài)聯(lián)編規(guī)定在程序編譯時(shí)就知道調(diào)用哪個(gè)函數(shù),就決定如何實(shí)現(xiàn)某一動(dòng)作。動(dòng)態(tài)聯(lián)編(后期聯(lián)編、滯后聯(lián)編)一直要到程序運(yùn)營(yíng)時(shí)才干擬定調(diào)用哪個(gè)函數(shù)。系統(tǒng)在運(yùn)營(yíng)時(shí)才動(dòng)態(tài)完畢的聯(lián)編。靜態(tài)聯(lián)編支持的多態(tài)性稱為編譯時(shí)多態(tài)性,也稱靜態(tài)多態(tài)性。在C++中,編譯時(shí)多態(tài)性是通過函數(shù)重載和運(yùn)算符重載實(shí)現(xiàn)的。動(dòng)態(tài)聯(lián)編支持的多態(tài)性稱為運(yùn)營(yíng)時(shí)多態(tài)性,也稱動(dòng)態(tài)多態(tài)性。在C++中,運(yùn)營(yíng)時(shí)多態(tài)性是通過繼承和虛函數(shù)來實(shí)現(xiàn)的。29.運(yùn)算符重載:C++除了可以對(duì)函數(shù)重載外,還可以對(duì)大多數(shù)運(yùn)算符實(shí)行重載。外部普通函數(shù)類的友元函數(shù)是類的成員函數(shù)成員運(yùn)算符函數(shù)定義的語法形式成員運(yùn)算符函數(shù)的原型在類的內(nèi)部聲明格式為:classX{//...返回類型operator運(yùn)算符(形參表);//...};30.虛函數(shù)的引入,基類的指針可以指向它的公有派生類的對(duì)象,用“指針”才有虛函數(shù)的問題。引入派生類后,由于派生類是由基類派生出來的,因此指向基類的指針和指向派生類的指針是相關(guān)的:(1)基類的指針可以指向它的公有派生類的對(duì)象。但不允許指向它的私有派生類的對(duì)象。(2)派生類的指針不允許指向它的基類的對(duì)象。(3)基類的指針指向它的公有派生類的對(duì)象時(shí),只能用它來直接訪問派生類中從基類繼承來的成員,而不能直接訪問公有派生類中定義的新成員。31.有時(shí)在程序設(shè)計(jì)時(shí),使用對(duì)象指針的目的是為了動(dòng)態(tài)和靈活,即當(dāng)指針指向不同對(duì)象(基類對(duì)象或派生類對(duì)象)時(shí),能分別調(diào)用不同類的成員函數(shù)。假如將函數(shù)說明為虛函數(shù),就能實(shí)現(xiàn)這種動(dòng)態(tài)調(diào)用的功能。虛函數(shù)的定義是在基類中進(jìn)行的:virtual函數(shù)類型函數(shù)名(形參表){函數(shù)體}32.純虛函數(shù)的一般形式如下:virtual函數(shù)類型函數(shù)名(參數(shù)表)=0;假如一個(gè)類至少有一個(gè)純虛函數(shù),那么就稱該類為抽象類【第6章】33.模板的概念模板是C++語言的一個(gè)重要特性。模板是實(shí)現(xiàn)代碼重用機(jī)制的一種工具,它可以實(shí)現(xiàn)類型參數(shù)化,即把類型定義為參數(shù),從而實(shí)現(xiàn)了代碼重用,使得一段程序可以用于解決多種不同類型的對(duì)象,大幅度地提高程序設(shè)計(jì)的效率。34.函數(shù)模板和類模板(1).函數(shù)模板與模板函數(shù)所謂函數(shù)模板,就是寫一個(gè)函數(shù)模子,用這個(gè)模子套印出許多功能相同,參數(shù)類型和返回類型不同的函數(shù)。模板函數(shù):函數(shù)模板實(shí)例化后的具體函數(shù)。(2)類模板和模板類類模板(也稱為類屬類或類生成類)是:允許用戶為類定義一種模子,使得類中的某些數(shù)據(jù)成員,某些成員函數(shù)的參數(shù)或者返回值,能取任意數(shù)據(jù)類型【第7章】35.C++流概念:cin>>對(duì)象;cout<<對(duì)象;整型、實(shí)型、字符、字符串等有格式的輸入輸出36.文獻(xiàn)的輸入輸出:在具有文獻(xiàn)操作的程序中,必須有如下的預(yù)解決命令:#include<fstream.h>open、close函數(shù)文本文獻(xiàn)、二進(jìn)制文獻(xiàn)讀寫。復(fù)習(xí)思考題、即考試的A、B、C、D選擇題和填空題一、分清下面的概念,那些是對(duì)的的,那些是錯(cuò)誤的1.面向?qū)ο蟪绦虻闹匾Y(jié)構(gòu)特點(diǎn)之一√程序一般由類的定義和類的使用兩部分組成?!坛绦蛑械囊磺胁僮鞫际峭ㄟ^向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn)的。×程序中的一切操作都是通過調(diào)用函數(shù)來實(shí)現(xiàn)的?!脸绦蛞话阌珊瘮?shù)定義和函數(shù)的使用兩部分組成。×程序一般由變量的定義和變量的使用兩部分組成?!脸绦蛞话阌蓪?duì)象的定義和對(duì)象的使用兩部分組成?!脸绦蛑械囊磺胁僮鞫际峭ㄟ^定義函數(shù)來實(shí)現(xiàn)的?!脸绦蛑械囊磺胁僮鞫际峭ㄟ^定義類來實(shí)現(xiàn)的。2.對(duì)象是現(xiàn)實(shí)世界中的一個(gè)實(shí)體,其特性√每個(gè)對(duì)象必須有一個(gè)名字,以示區(qū)別?!逃袑傩悦枋?。√有一組操作?!虅?chuàng)建對(duì)象時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)。×必須有一個(gè)關(guān)鍵字?!烈欢ㄒ远x一個(gè)構(gòu)造函數(shù)。×要有二個(gè)以上數(shù)據(jù)。3.面向?qū)ο笙到y(tǒng)的特性是√抽象性√封裝性 √繼承性√多態(tài)性×完整性×唯一性×二義性?×安全性4.類的概念是√對(duì)一組具有共同的屬性特性和行為特性的對(duì)象的抽象?!掏活悢?shù)據(jù)的集合。×類即是對(duì)象數(shù)組?!粮鞣N對(duì)象的集合。×同一記錄的集合。×同類函數(shù)的集合?!连F(xiàn)實(shí)世界中所有對(duì)象的集合。5.類和對(duì)象之間的關(guān)系是√抽象和具體的關(guān)系。√類型和變量之間的關(guān)系?!探Y(jié)構(gòu)類型和結(jié)構(gòu)體的關(guān)系?!炼x和被定義的關(guān)系?!琳{(diào)用和被調(diào)用的關(guān)系?!令惣词菍?duì)象數(shù)組?!列秃椭档年P(guān)系?!林羔樅退傅膶?duì)象的關(guān)系。6.構(gòu)造函數(shù)的特性√構(gòu)造函數(shù)的函數(shù)名與類名完全相同?!虡?gòu)造函數(shù)可以有形式參數(shù)。√構(gòu)造函數(shù)可以重載。√在創(chuàng)建對(duì)象時(shí)被執(zhí)行。×在程序編譯時(shí)被執(zhí)行?!猎趧?chuàng)建類時(shí)被執(zhí)行。×在程序裝入內(nèi)存時(shí)被執(zhí)行?!翗?gòu)造函數(shù)必須說明返回類型?!脸绦蛑幸姓{(diào)用構(gòu)造函數(shù)的語句。7.析構(gòu)函數(shù)的特性√一個(gè)類中只能定義一個(gè)析構(gòu)函數(shù)?!涛鰳?gòu)函數(shù)名與類名相同并加~?!滔到y(tǒng)會(huì)自動(dòng)調(diào)用析構(gòu)函數(shù)。×析構(gòu)函數(shù)的定義只能在類體內(nèi)?!廖鰳?gòu)函數(shù)可以有多個(gè)參數(shù)。×一個(gè)類中能定義多個(gè)析構(gòu)函數(shù)。關(guān)于成員函數(shù)特性的下述描述√成員函數(shù)可以重載。√成員函數(shù)可以設(shè)立參數(shù)的缺省值?!坛蓡T函數(shù)可以是靜態(tài)的?!填惗x中只給出成員函數(shù)的原型,而成員函數(shù)在類外定義?!填惗x中只給出成員函數(shù)的原型,而成員函數(shù)在類外定義并在之前加inline?!炭稍陬悆?nèi)定義?!脸蓡T函數(shù)一定要在類內(nèi)定義?!脸蓡T函數(shù)一定是內(nèi)置函數(shù)。9.下列的各種函數(shù)中,是本類的成員函數(shù)√構(gòu)造函數(shù) √析構(gòu)函數(shù) √拷貝構(gòu)造函數(shù)√缺省參數(shù)的構(gòu)造函數(shù)×友元函數(shù)×主函數(shù)×普通函數(shù)×標(biāo)準(zhǔn)函數(shù)10.在友元函數(shù)的下面說法中,對(duì)的的是:√友元函數(shù)是獨(dú)立于當(dāng)前類的外部函數(shù)?!烈粋€(gè)友元函數(shù)不能同時(shí)定義為兩個(gè)類的友元函數(shù)×友元函數(shù)必須在類的外部定義?!猎谕獠慷x友元函數(shù)時(shí),必須加friend11.友元的作用是什么,一個(gè)類的友元可以訪問該類的什么√提高程序的運(yùn)營(yíng)效率?!良訌?qiáng)類的封裝性?!翆?shí)現(xiàn)數(shù)據(jù)的隱藏性?!猎鲩L(zhǎng)成員函數(shù)的種類√所有成員 ×只能是私有成員?×只能是公有成員?×成員函數(shù)12.對(duì)基類和派生類的關(guān)系描述中√派生類(如公共汽車)是基類(汽車)的子集。√派生類是基類定義的擴(kuò)延?!虩o論哪種派生,基類的私有成員不允許派生類的成員函數(shù)訪問。√無論哪種派生,基類的公有成員允許派生類的成員函數(shù)訪問?!虩o論哪種派生,基類的保護(hù)成員允許派生類的成員函數(shù)訪問?!僚缮愂腔惖木唧w化。×派生類是基類的組合?!翢o論哪種派生,基類的保護(hù)成員不允許派生類的成員函數(shù)訪問。13.派生類的對(duì)象對(duì)它的基類成員中,可以訪問的是√公有繼承的公有成員?!凉欣^承的保護(hù)成員。×公有繼承的私有成員?!凉欣^承的所有成員?!了接欣^承的公有成員?!了接欣^承的私有成員?!了接欣^承的所有成員?!了接欣^承的保護(hù)成員。14.對(duì)虛基類對(duì)的的論述√定義派生類時(shí),在基類名前加virtual。×定義基類時(shí)加virtual?!脸蓡T函數(shù)前加virtual。×在派生類名前加virtual。15.一個(gè)派生類有多個(gè)父類,而這多個(gè)父類又有一個(gè)共同基類,這種情況,才考慮設(shè)立虛基類,其目的是:√消除二義性。簡(jiǎn)化程序。提高運(yùn)營(yíng)效率。減少目的代碼。16.C++中函數(shù)可以重載:(P31)√只要函數(shù)參數(shù)的類型不同,√或者參數(shù)的個(gè)數(shù)不同,√或者兩者兼有之,兩個(gè)以上函數(shù)可以同名。17.不可重載的函數(shù)的是:√析構(gòu)函數(shù)。(可以:)普通的成員函數(shù)。友元函數(shù)。外部函數(shù)。?18.可定義作運(yùn)算符重載函數(shù)的是√成員函數(shù)?!逃言瘮?shù)。√類以外的函數(shù)。×析構(gòu)函數(shù)。×無返回值的函數(shù)。×構(gòu)造函數(shù)。19.不能重載運(yùn)算符√::√?: &&[]new++()delete20.關(guān)于動(dòng)態(tài)聯(lián)編的描述,動(dòng)態(tài)聯(lián)編稱為運(yùn)營(yíng)時(shí)的多態(tài)性是通過什么來實(shí)現(xiàn)的。√動(dòng)態(tài)聯(lián)編是以虛函數(shù)為基礎(chǔ)的?!虅?dòng)態(tài)聯(lián)編是在運(yùn)營(yíng)時(shí)擬定所調(diào)用的函數(shù)的?!虅?dòng)態(tài)聯(lián)編調(diào)用的函數(shù),是用基類對(duì)象的指針或?qū)ο笠盟傅暮瘮?shù)?!汤^承和虛函數(shù)。動(dòng)態(tài)聯(lián)編是在編譯時(shí)擬定操作函數(shù)的。函數(shù)重載和運(yùn)算符重載。 運(yùn)算符重載。?函數(shù)重載。21.說白了,通過基類指針或引用來訪問基類和派生類中的同名函數(shù),才考慮虛函數(shù)。其描述:√虛函數(shù)是在基類中用virtual說明,派生類中重新定義的函數(shù)?!撂摵瘮?shù)是一個(gè)static類型的成員函數(shù)?!撂摵瘮?shù)是一個(gè)非成員函數(shù)?!僚缮惖奶摵瘮?shù)與基類的虛函數(shù)具有不同的參數(shù)個(gè)數(shù)和類型。22.抽象類論述:√假如一個(gè)類至少有一個(gè)純虛函數(shù),那么該類為抽象類?!坛橄箢愔荒苡米髌渌惖幕?不能建立抽象類對(duì)象?!坛橄箢惪梢杂脕矶x指針?!脸橄箢惪梢宰鳛槟硞€(gè)函數(shù)的返回類型。23.進(jìn)行文獻(xiàn)操作時(shí)需要包含的文獻(xiàn),C++用cout和cin進(jìn)行輸出/輸入操作時(shí)需要包含文獻(xiàn)?!蘤stream.h?√iostream.h?stdio.h?stdlib.hstring.hmath.h24.面向?qū)ο蟪绦蛟O(shè)計(jì)是不同于傳統(tǒng)程序設(shè)計(jì)的一種新的程序設(shè)計(jì)范型。面向?qū)ο蟮某绦蛟O(shè)計(jì)被認(rèn)為是程序設(shè)計(jì)方法學(xué)的一場(chǎng)實(shí)質(zhì)性的革命(在導(dǎo)學(xué)中)。25.面向?qū)ο螅ǎ?O)程序設(shè)計(jì)是一種新的程序設(shè)計(jì)范型。這種范型的重要特性是:程序=對(duì)象+消息26.現(xiàn)實(shí)世界中,對(duì)象一般可以表達(dá)為:屬性+行為27.在定義類時(shí),第一個(gè)保存字。(class)28.將數(shù)據(jù)結(jié)構(gòu)和作用于數(shù)據(jù)結(jié)構(gòu)上的操作組成一個(gè)實(shí)體,數(shù)據(jù)的表達(dá)方式和對(duì)數(shù)據(jù)的操作細(xì)節(jié)被隱藏起來,這是面向?qū)ο蟪绦蛟O(shè)計(jì)的(封裝性)。而函數(shù)重載是(多態(tài)性)。29.C++中類的定義內(nèi)部,英文private段,protected段,public段(私有段保護(hù)段公有段)30.定義了類A,在主函數(shù)中如出現(xiàn):A*p,obj,ob[10];的語句。(則p是對(duì)象指針、obj是對(duì)象、ob是對(duì)象數(shù)組。)31.C++的運(yùn)算符:<<>>newdelete(輸入輸出申請(qǐng)釋放)32.在C++定義的類中,成員可分為二類,有三個(gè)段。(數(shù)據(jù)成員函數(shù)成員私有公有保護(hù))33.在一個(gè)類定義中,可以聲明友元,友元可以是三種友元。(友元函數(shù)友元成員友元類)34.C++中,函數(shù)說明為voidfun(int&i)的引用叫,(參數(shù)引用),函數(shù)說明為void&fun(inti)的引用叫。(返回值引用)35.繼承機(jī)制允許派生類繼承基類的什么,(數(shù)據(jù)和操作)同時(shí),派生類還可以增長(zhǎng)新的什么。(數(shù)據(jù)和操作)36.類外的函數(shù)作運(yùn)算符重載時(shí),只能訪問類的(公有)成員,而用類的友元運(yùn)算符函數(shù)或成員運(yùn)算符函數(shù)重載可以訪問類的(所有)成員。37.一個(gè)類模板允許用戶為類定義什么?(一個(gè)模式(子))使得類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)或返回值,能取什么類型?(任意數(shù)據(jù)類型)38.模板是實(shí)現(xiàn)代碼重用機(jī)制的一種工具,函數(shù)模板的實(shí)例化、類模板的實(shí)例化分別稱為(模板函數(shù)、模板類)復(fù)習(xí)之二、閱讀程序?qū)戇\(yùn)營(yíng)結(jié)果、程序填空(把這些程序真正讀懂,不要背答案!)1.函數(shù)、函數(shù)調(diào)用、函數(shù)原型(涉及參數(shù)引用、返回值的引用)2.類的定義和定義對(duì)象(涉及對(duì)象指針)3.派生和繼承的應(yīng)用4.派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)執(zhí)行順序5.函數(shù)重載和運(yùn)算符重載復(fù)習(xí)思考題1.#include<iostream.h>intadd(int,int);intmain(){intx,y,sum;cout<<”輸入二個(gè)整數(shù):”;cin>>x>>y;sum=add(x,y);cout<<”x+y=”<<sum<<endl;return0;}intadd(inta,intb){intc;c=a+b;returnc;}答案:輸入二個(gè)整數(shù):1020x+y=302.#include<iostream.h>voidfun1(inti){i+=5;}voidfun2(int&i){i+=15;}voidmain(){intk=10;fun1(k);cout<<"k="<<k;fun2(k);cout<<"k="<<k<<endl;}答案:k=5k=153.#include<iostream.h>int&f(int&i){i+=10;returni;}intmain(){intk=0;int&m=f(k);cout<<k<<’,’;m=20;cout<<k<<endl;return0;}答案:10,204.#include<iostream.h>classPoint{public:Point(intx1=0,inty1=0){x=x1;y=y1;}voidprint();private:intx,y;};voidPoint::print(){cout<<"x="<<x<<"y="<<y<<endl;}voidprint(Pointp){p.print();}voidmain(){Pointp1(10,20),p2(30),p3,*p;p=&p1;?p->print();p2.print();print(p3);}答案:x=10y=20x=30y=0x=0y=05.#include<iostream.h>classPoint{public:Point(intx1=0,inty1=0){x=x1;y=y1;d=x*x+y*y;}voidprint(){cout<<"x="<<x<<"y="<<y<<”dist=”<<d<<endl;}private:intx,y,d;};voidmain(){Pointp1(1),p2(2,3),*p;p=&p1;?p->print();p2.print();}答案:x=1y=0dist=1x=2y=3dist=136.#include<iostream.h>classBase{public:Base(intn){cout<<"現(xiàn)在進(jìn)入Base基類的構(gòu)造函數(shù)\n";i=n;}~Base(){cout<<"現(xiàn)在進(jìn)入Base基類的析構(gòu)函數(shù)\n";}voidshowi(){cout<<i<<endl;}private:inti;};classDerive:publicBase{public:Derive(intn,intm):Base(m){cout<<"現(xiàn)在進(jìn)入Derive派生類的構(gòu)造函數(shù)\n";j=n;}~Derive(){cout<<"現(xiàn)在進(jìn)入Derive派生類的析構(gòu)函數(shù)“<<endl;}voidshowj(){cout<<j<<endl;}private:intj;};voidmain(){Deriveobj(30,40);obj.showi();obj.showj();}答案:現(xiàn)在進(jìn)入Base基類的構(gòu)造函數(shù)現(xiàn)在進(jìn)入Derive派生類的析構(gòu)函數(shù)4030現(xiàn)在進(jìn)入Derive派生類的析構(gòu)函數(shù)現(xiàn)在進(jìn)入Base基類的析構(gòu)函數(shù)7.#include<iostream.h>classTime{ chara[9];public:Time(ints=0,intm=0,inth=0){hours=h;minutes=m;seconds=s;}voidshow(){cout<<"時(shí)間:"<<hours<<":"<<minutes<<":"<<seconds<<endl;}friendTimeoperator+(Timet1,Timet2);private:inthours;intminutes;intseconds;};Timeoperator+(Timet1,Timet2){Timetemp;temp.hours=t1.hours+t2.hours;temp.minutes=t1.minutes+t2.minutes;temp.seconds=t1.seconds+t2.seconds;if(temp.seconds>60){temp.seconds=temp.seconds-60;temp.minutes++;}if(temp.minutes>60){temp.minutes=temp.minutes-60;temp.hours++;}?if(temp.hours>=24)temp.hours=temp.hours-24;?returntemp;}voidmain(){TimeT,T1(20,23,21),T2(10,25,15),T3(5,10,15);T=T1+T2;T.show();T=T+T3;T.show();}答案:時(shí)間:12:48:30時(shí)間:3:58:358.#include<iostream.h>#include<string.h>classStr{public:Str(char*pi){p=newchar[strlen(pi)+1];strcpy(p,pi);}voidshow(){cout<<"字符串:"<<p<<endl;}voidoperator++();privat(yī)e:char*p;};voidStr::operator++(){Strtemp("\0");temp.p=newchar[2*strlen(this->p)+1];strcpy(temp.p,this->p);strcat(yī)(temp.p,this->p);this->p=newchar[2*strlen(this->p)+1];strcpy(this->p,temp.p);}voidmain(){StrT1("ABCDXYZ");++T1;T1.show();}答案:字符串:ABCDXYZABCDXYZ9.下面的程序定義一個(gè)類samp,有三類數(shù)據(jù)成員和一個(gè)構(gòu)造函數(shù)和一個(gè)函數(shù)成員,填充程序缺少部分,使其變成完整的C++程序。#include<iostream.h>classSamp{protected:intb;.public:intc;(1)(intn,intm)//構(gòu)造函數(shù){a=n;(2);c=a+b;}int(3)(inti)//成員函數(shù){if(i==1)returna;elseif(i==2)returnb;elsereturn0;}private:inta;};voidmain(){Sampobj(20,30);cout<<(4)<<endl;//輸出20cout<<obj.getab(2)<<endl;//輸出30cout<<(5)<<endl;//輸出50}答案:⑴.Samp⑵.b=m;⑶.getab⑷.obj.getab(1)⑸.obj.c10.下面的程序定義一個(gè)類samp,有三類數(shù)據(jù)成員和一個(gè)構(gòu)造函數(shù)和一個(gè)函數(shù)成員,填充程序缺少部分,使其變成完整的C++程序。#include<iostream.h>class(1){public:intc;(2)(intn,intm)//構(gòu)造函數(shù)名{a=n;b=m;c=a+b;}int(3)(charch)//成員函數(shù)名{switch(ch){case'a':returna;break;case'b':returnb;break;default:return0;}}private:inta,b;};voidmain(){Myclass(4)(20,30);//定義對(duì)象cout<<o(jì)bj.get('a')<<endl;//輸出20cout<<obj.get('b')<<endl;//輸出30cout<<(5)<<endl;//輸出50}答案:⑴.Myclass⑵.Myclass⑶.get⑷.obj⑸.obj.c11.定義一個(gè)基類長(zhǎng)方形Base,私有段有長(zhǎng)a和寬b,公有段有構(gòu)造函數(shù),能顯示長(zhǎng)方形面積等。定義以該長(zhǎng)方形為底面積的派生類長(zhǎng)方體Cuboid,有高h(yuǎn),有構(gòu)造函數(shù),能顯示長(zhǎng)方體體積。在主函數(shù)中定義長(zhǎng)方體對(duì)象,其長(zhǎng)、寬、高分別為10,20,5,顯示出長(zhǎng)方體體積和長(zhǎng)方形底面積。#include<iostream.h>classBase{//定義長(zhǎng)方形public:Base(floata1=0,float(yī)b1=0){(1)//公有段構(gòu)造函數(shù)體}voidarea()//函數(shù)area()顯示長(zhǎng)方形面積{cout<<"長(zhǎng)方形面積是:"<<a*b<<endl;}floatgetr(){returna*b;}private:.floata,b;};classCuboid:publicBase{//定義以該長(zhǎng)方形為底的派生類長(zhǎng)方體public:Cuboid(floata1,floatb1,floath1):(2)//構(gòu)造函數(shù){h=h1;}void(3)()//顯示長(zhǎng)方體體積的函數(shù){cout<<"長(zhǎng)方體體積是:"<<h*getr()<<endl;}private:float(yī)h;};voidmain(){(4)ob(10,20,5);//這里定義對(duì)象ob(5);//這里輸出長(zhǎng)方形面積ob.body();//這里輸出長(zhǎng)方體體積}答案:⑴.a=a1;b=b1;⑵.Base(a1,b1)⑶.body⑷.Cuboid⑸.ob.area()12.定義一個(gè)基類長(zhǎng)方形Base,私有段有a和寬b,公有段有構(gòu)造函數(shù),能顯示長(zhǎng)方形面積等。定義以該長(zhǎng)方形為底面積的派生類長(zhǎng)方體Cuboid,有高h,有構(gòu)造函數(shù),能顯示長(zhǎng)方體體積。在主函數(shù)中定義長(zhǎng)方體對(duì)象,其長(zhǎng)、寬、高分別為10,20,5,顯示出長(zhǎng)方體體積和長(zhǎng)方形底面積。#include<iostream.h>classBase{//定義長(zhǎng)方形public:Base(floata1=0,float(yī)b1=0){a=a1;b=b1;//公有段構(gòu)造函數(shù)體}voidarea()//函數(shù)area()輸出顯示長(zhǎng)方形面積{cout<<"長(zhǎng)方形面積是:"<<(1)<<endl;}floatgetr(){returna*b;}//函數(shù)getr()計(jì)算長(zhǎng)方形面積private:floata,b;};classCuboid:publicBase{//定義以該長(zhǎng)方形為底的派生類長(zhǎng)方體public:Cuboid(floata1,floatb1,floath1):(2)//構(gòu)造函數(shù){h=h1;}voidbody()//輸出顯示長(zhǎng)方體體積的函數(shù){cout<<"長(zhǎng)方體體積是:"<<h*getr()<<endl;}private:floath;//h是長(zhǎng)方體的高};voidmain(){(3)ob(10,20,5);//這里定義對(duì)象ob(4);//這里調(diào)用函數(shù),輸出長(zhǎng)方形面積(5);//這里調(diào)用函數(shù),輸出長(zhǎng)方體體積}答案:⑴.a*b;⑵.Base(a1,b1)⑶.Cuboid⑷.ob.area()⑸.ob.body()?復(fù)習(xí)之三、程序設(shè)計(jì)題(
把這些程序真正讀懂)1.C++基礎(chǔ)知識(shí)2.定義類、成員函數(shù)及構(gòu)造函數(shù)的習(xí)題來自《VC++6.0面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)提綱》1.下面是一個(gè)C程序,改寫它,使它采用C++風(fēng)格的I/O語句。#include<stdio.h>←#include<iostream.h>voidmain(){inta,b,d,min;printf("輸入兩個(gè)整數(shù):");←cout<<"輸入兩個(gè)整數(shù):";scanf(”%d%d”,&a,&b);←cin>>a;cin>>b;min=a>b?b:a;for(d=2;d<=min;d++)if((a%d==0)&&(b%d==0))break;if(d>min)printf("沒有公約數(shù)!\n");←cout<<"沒有公約數(shù)!\n";elseprintf("最小公約數(shù)是:%d\n",d);←cout<<"最小公約數(shù)是:"<<d<<endl;}2.編C++程序,從鍵盤輸入二個(gè)任意大小的數(shù),在屏幕上從小到大輸出這二個(gè)數(shù)。#include<iostream.h>voidmain(){inta,b,c;cin>>a;cin>>b;if(a>b){c=a;a=b;b=c;}cout<<a<<””<<b<<endl;}3.定義一個(gè)基類圓Circle,私有段有圓的半徑,公有段有構(gòu)造函數(shù),能顯示圓面積等。定義派生類Ex_square為圓的外切正方形,有構(gòu)造函數(shù),能顯示正方形面積。在主函數(shù)中定義外切正方形對(duì)象,其圓半徑為10,顯示兩者面積。答案:#include<iostream.h>classCircle{floatr;//聲明一個(gè)圓類public:Circle(float(yī)x=0){r=x;}//構(gòu)造函數(shù)voidarea1()//函數(shù)area()顯示圓面積{cout<<"圓面積是:"<<3.14*r*r<<endl;}floatgetr(){returnr;}private:floatr;};classEx_square:publicCircle{//派生一個(gè)圓外切正方形類public:Ex_square(floatx):circle(x){}//構(gòu)造函數(shù)voidarea2()//函數(shù)area()顯示正方形面積{cout<<"外切正方形面積是:"<<4*getr()*getr()<<endl;}};voidmain(){Ex_squareob(10);ob.a(chǎn)rea1();ob.area2();}4.【習(xí)題3.32】建立類Cylinder,Cylinder的構(gòu)造函數(shù)被傳遞了兩個(gè)double值,分別表達(dá)圓柱體的半徑和高。用類cylinder計(jì)算圓柱體的體積,并存儲(chǔ)在一個(gè)double變量中。在類Cylinder中包含一個(gè)成員函數(shù)vol,用來顯示每個(gè)Cylinder對(duì)象的體積。(數(shù)據(jù):圓柱體的半徑為2.2,高為8.09)答案:#include<iostream.h>classCylinder{//聲明圓柱體public:Cylinder(doublea,doubleb){r=a;h=b;volnume=3.141592*r*r*h;}voidvol()//函數(shù)vol()顯示圓柱體的體積{cout<<"圓柱體的體積是:"<<volnume<<endl;}priv
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年興業(yè)銀行濟(jì)南分行社會(huì)招聘?jìng)淇碱}庫完整答案詳解
- 2025年將樂縣公安局招聘警務(wù)輔助人員備考題庫有答案詳解
- 福清出入境邊防檢查站2025年警務(wù)輔助人員招聘?jìng)淇碱}庫及完整答案詳解1套
- 2025年選聘常德市石門縣人民政府行政復(fù)議委員會(huì)專家委員10人備考題庫帶答案詳解
- 2025年上海市化工職業(yè)病防治院(上海市職業(yè)安全健康研究院)工作人員公開招聘18人備考題庫帶答案詳解
- 2025年寧波市公安警務(wù)保障服務(wù)中心招聘編外工作人員6人備考題庫及一套參考答案詳解
- 昆明市官渡區(qū)云南大學(xué)附屬中學(xué)星耀學(xué)校2026年校園招聘?jìng)淇碱}庫附答案詳解
- 湖北省黃石市陽新縣聯(lián)考2025-2026學(xué)年八年級(jí)上學(xué)期12月月考生物試題
- 福建省龍巖市連城縣第一中學(xué)等校2025-2026學(xué)年高一上學(xué)期12月月考政治試題(含解析)
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國(guó)鍛造機(jī)械行業(yè)全景評(píng)估及投資規(guī)劃建議報(bào)告
- 小品劇本《鍘美案》臺(tái)詞完整版遼寧民間藝術(shù)團(tuán)宋小寶
- 電子合同取證流程規(guī)范
- 張家界航空工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試參考試題庫(含答案)
- 醫(yī)藥代表如何成功拜訪客戶
- 科研倫理與學(xué)術(shù)規(guī)范-課后作業(yè)答案
- 交通銀行跨境人民幣業(yè)務(wù)介紹
- GB/T 33636-2023氣動(dòng)用于塑料管的插入式管接頭
- 旅游地理學(xué) 國(guó)家公園建設(shè)與管理
- JJF(石化)036-2020漆膜附著力測(cè)定儀(劃圈法)校準(zhǔn)規(guī)范
- 診所醫(yī)生聘用合同(3篇)
- JJG 693-2011可燃?xì)怏w檢測(cè)報(bào)警器
評(píng)論
0/150
提交評(píng)論