C++期末考試復習資料_第1頁
C++期末考試復習資料_第2頁
C++期末考試復習資料_第3頁
C++期末考試復習資料_第4頁
C++期末考試復習資料_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

面向對象程序設計總復習復習之一、對照書本(或上課課件)上,搞懂關于概念【第0-1章】1.面向對象程序設計是不一樣于傳統(tǒng)程序設計一個新程序設計范型。它對降低軟件復雜性,改進其重用性和維護性,提升軟件生產效率,有著十分主要意義。所以面向對象程序設計被認為是程序設計方法學一場實質性革命(在導學中)。2.面向對象(O-O)程序設計是一個新程序設計范型。這種范型主要特征是:程序=對象+消息面向對象程序主要結構特點是:第一,程序通常由類定義和類使用兩部分組成;第二,程序中一切操作都是經(jīng)過向對象發(fā)送消息來實現(xiàn),對象接收到后,開啟關于方法完成對應操作。3.現(xiàn)實世界中,對象通常能夠表示為:屬性+行為現(xiàn)實世界中對象,具備以下特征:(1)每一個必須有一個名字以區(qū)分于其余對象;(2)用屬性來描述對象一些特征;(3)有一組操作,每組操作決定對象一個行為;(4)對象行為能夠分為兩類:一類是作用于本身行為,另一類是作用于其余對象行為。4.在現(xiàn)實世界中,類是一組具備相同屬性和行為對象抽象。類與對象關系是抽象和詳細關系。在C++面向對象程序設計中,把類中屬性稱為數(shù)據(jù)(數(shù)據(jù)組員),類中操作是用函數(shù)(函數(shù)組員)來實現(xiàn)。5.面向對象程序設計基本特征:抽象性、封裝性、繼承性和多態(tài)性(1).抽象是經(jīng)過特定實例(對象)抽取共同性質后形成概念過程。(2).在面向對象程序設計中,封裝是指把數(shù)據(jù)和實現(xiàn)操作代碼集中起來放在對象內部,并盡可能隱蔽對象內部細節(jié)。(3).繼承機制允許派生類繼承基類數(shù)據(jù)和操作(即數(shù)據(jù)組員和組員函數(shù)),也就是說,允許派生類使用基類數(shù)據(jù)和操作。同時派生類還能夠增加新操作和數(shù)據(jù)。從繼承源上分,繼承分為單繼承和多繼承。(4).面向對象系統(tǒng)多態(tài)性是指不一樣對象收到相同消息時產生多個不一樣行為方式。如能夠有同名函數(shù)【第2章】6.簡單C++程序例2.1計算兩個整數(shù)之和sum.cpp這兩行也可用一行代替:#include<iostream.h>#include<iostream這兩行也可用一行代替:#include<iostream.h>usingnamespacestd;intmain()//主函數(shù){intx,y,sum;//定義三個整型變量cout<<"輸入二個數(shù):"<<'\n';//界面:提醒用戶輸入二個數(shù)cin>>x;//從鍵盤輸入變量x值cin>>y;//從鍵盤輸入變量y值sum=x+y;cout<<“x+y="<<sum<<'\n';//輸出return0;}C++新行(回車換行)'\n’或endl(ENDL小寫)新輸入/輸出:老:scanf新:cin是標準輸入流,在程序中用于代表標準輸入設備,即鍵盤。運算符“>>”表示向右老:printf新:cout是標準輸出流,在程序中用于代表標準輸出設備,即屏幕。運算符“<<”表示向左使用cin或cout進行I/O操作時,在程序頭中頭文件#include<iostream.h>7.函數(shù)原型(函數(shù)申明)(重點)返回值類型函數(shù)名(參數(shù)表);例2.7intadd(inta,intb);intadd(int,int);使用在前,定義在后,要先申明。若定義在前,使用在后,就可無須申明。8.函數(shù)重載:C++中,只要函數(shù)參數(shù)類型不一樣,或者參數(shù)個數(shù)不一樣,或者二兼有之,幾個函數(shù)能夠用相同函數(shù)名。稱為函數(shù)重載9.C語言用函數(shù)malloc()和free()動態(tài)分配內存和釋放動態(tài)分配內存。C++使用運算符new和delete能愈加好、更簡單地進行內存分配和釋放。10.引用(重點)引用可為變量起別名,它主要用作函數(shù)參數(shù)以及函數(shù)返回類型。引用有三種:(1)有變量引用、(2)參數(shù)引用和(3)返回值引用。11.1、&取地址運算符取西瓜皮2、*指針運算符(間接訪問運算符)挖西瓜馕【第3章】12.C++中說明(類定義)類通常形式為clsaa類名{[private:](可省略)私有段數(shù)據(jù)組員和組員函數(shù)protected:保護段數(shù)據(jù)組員和組員函數(shù)public:公有段數(shù)據(jù)組員和組員函數(shù)};組員函數(shù)定義方式:第一個方式是在類定義中只給出組員函數(shù)原形,而組員函數(shù)體在類外部定義。第二種方式是將組員函數(shù)定義在類內部,即定義為內置函數(shù)。(1)隱式定義(2)顯式定義13.類對象中組員引用(使用、訪問都是同一個意思)不論是數(shù)據(jù)組員,還是組員函數(shù),只要是公有,就能夠被外部函數(shù)直接引用,引用通常格式是:對象名.數(shù)據(jù)組員名和對象名.組員函數(shù)名(實參表)外部函數(shù)不能引用對象私有組員總之:類組員訪問屬性:類公有組員不但能夠被類中組員函數(shù)訪問,還能夠在類外部經(jīng)過類對象進行訪問。類私有組員只能被類中組員函數(shù)訪問,不能在類外部經(jīng)過類對象進行訪問。14.結構函數(shù)特點:(1)結構函數(shù)名字必須與類名相同,不然編譯程序將把它看成通常組員函數(shù)來處理。(2)結構函數(shù)沒有返回值,在申明和定義結構函數(shù)時,是不能說明它類型,甚至說明為void類型也不行。(3)結構函數(shù)也是組員函數(shù),與普通組員函數(shù)一樣,結構函數(shù)函數(shù)體可寫在類體內,也可寫在類體外。(4)通常不提倡在結構函數(shù)中加入與初始化無關內容(5)結構函數(shù)通常申明為公有組員。它不需要用戶來調用,而是在建立對象時自動執(zhí)行。(6)在實際應用中,通常需要給每個類定義結構函數(shù)。假如沒有給類定義結構函數(shù),則編譯系統(tǒng)自動地生成一個缺省結構函數(shù)。complex::complex(){}//不能帶任何參數(shù)。(7)定義結構函數(shù)時,也能夠是不帶參數(shù)。15.C++允許重載結構函數(shù),這些結構函數(shù)之間名字相同,而以它們所帶參數(shù)個類或類型不一樣而區(qū)分。帶默認參數(shù)結構函數(shù)。16.對象賦值和拷貝結構函數(shù),其作用是,在建立新對象時,使用一個已經(jīng)存在對象去初始化這個新對象。piontp2(p1);17.析構函數(shù)也是特殊組員函數(shù),用于釋放對象。(1)析構函數(shù)與結構函數(shù)名字相同,但它前面必須加一個波浪號(~)。(2)析構函數(shù)沒有參數(shù),也沒有返回值,而且不能重載,所以在一個類中只能有一個析構函數(shù)。(3)當撤消對象時,編譯系統(tǒng)會自動地調用析構函數(shù)。18.能夠用類定義對象數(shù)組:類名數(shù)組名[元素個數(shù)];19.當需要時,能夠用類定義對象指針。對象指針就是用于存放對象地址變量類名*對象指針名;20.類封裝性,使類只能經(jīng)過組員函數(shù)來訪問私有組員。這是好事但也有一定限制太死感覺。能否開個小孔口,必要時作個破例,使外界函數(shù)、別類個別組員函數(shù)、甚致別類全部組員函數(shù)可訪問某個類私有組員。這個方法稱為友元。21.友元包含友元函數(shù)和友元類(1)友元函數(shù)分為:非組員函數(shù)作友元和別類組員函數(shù)作友元(2)友元類:在類定義時,在類內說明一個類(該類前面已定義),前加上friend表示該整個一個類是本類友元類。友元類全部組員函數(shù)能夠訪問它自己類私有組員又可本類私有組員?!镜?章】22.派生類定義基類:class基類名{類內容};申明派生類:class派生類名:繼承方式基類名{//派生類新增數(shù)據(jù)組員和函數(shù)組員};繼承方式可為公有繼承(用public)、私有繼承(用private或缺省)和保護繼承(用protected)23.基類組員在派生類中訪問屬性(重點)基類中組員在公有派生類中訪問屬性在私有派生類中訪問屬性在保護派生類中訪問屬性私有組員不可直接訪問不可直接訪問不可直接訪問公有組員公有私有保護保護組員保護私有保護24.派生類對基類組員訪問規(guī)則(重點)(1)私有繼承訪問規(guī)則基類中組員私有組員公有組員保護組員訪問方式內部訪問對象訪問不可訪問不可訪問可訪問不可訪問可訪問不可訪問(2)公有繼承訪問規(guī)則基類中組員私有組員公有組員保護組員訪問方式內部訪問對象訪問不可訪問不可訪問可訪問可訪問可訪問不可訪問(3)保護繼承訪問規(guī)則基類中組員私有組員公有組員保護組員訪問方式內部訪問對象訪問不可訪問不可訪問可訪問不可訪問可訪問不可訪問25.派生類結構函數(shù)和析構函數(shù)(1)派生類結構函數(shù)和析構函數(shù)執(zhí)行次序不論何中派生,當創(chuàng)建派生類對象時,首先執(zhí)行基類結構函數(shù),隨即再執(zhí)行派生類結構函數(shù);當撤消派生類對象時,則先執(zhí)行派生類析構函數(shù),隨即再執(zhí)行基類析構函數(shù)。(2).派生類結構函數(shù)和析構函數(shù)結構規(guī)則簡單派生類結構函數(shù)通常格式為: 派生類名(參數(shù)總表):基類名(參數(shù)表){派生類新增組員初始化語句}其中基類結構函數(shù)參數(shù),起源于派生類結構函數(shù)參數(shù)總表,也能夠用常數(shù)值。26.從多個類,派生出一個類,也即一個類從多個基類繼承稱為多重繼承。多重繼承申明格式以下:class派生類名:繼承方式1基類名1,...,繼承方式n基類名n{派生類新增數(shù)據(jù)組員和組員函數(shù)};派生類繼承了基類1到基類n全部數(shù)據(jù)組員和函數(shù)組員,其訪問屬性規(guī)則與單繼承情況一樣,多繼承可看成單一繼承擴展。27.假如一個派生類有多個直接基類,而這些直接基類又有一個相同基類,則在最低層派生類中會保留這個間接共同基類數(shù)據(jù)組員多份同名組員。在訪問這些同名組員時會產生二義性,才考慮虛基類,虛基類在派生類中申明形式:class派生類名:virtual繼承方式基類名{//............};經(jīng)過這么申明后,當基類經(jīng)過多條派生路徑被一個派生類繼承時,該派生類只繼承該基類一次,也就是說,基類組員無“副本”【第5章】28.編譯時多態(tài)性與運行時多態(tài)性靜態(tài)聯(lián)編(前期聯(lián)編)靜態(tài)聯(lián)編要求在程序編譯時就知道調用哪個函數(shù),就決定怎樣實現(xiàn)某一動作。動態(tài)聯(lián)編(后期聯(lián)編、滯后聯(lián)編)一直要到程序運行時才能確定調用哪個函數(shù)。系統(tǒng)在運行時才動態(tài)完成聯(lián)編。靜態(tài)聯(lián)編支持多態(tài)性稱為編譯時多態(tài)性,也稱靜態(tài)多態(tài)性。在C++中,編譯時多態(tài)性是經(jīng)過函數(shù)重載和運算符重載實現(xiàn)。動態(tài)聯(lián)編支持多態(tài)性稱為運行時多態(tài)性,也稱動態(tài)多態(tài)性。在C++中,運行時多態(tài)性是經(jīng)過繼承和虛函數(shù)來實現(xiàn)。29.運算符重載:C++除了能夠對函數(shù)重載外,還能夠對大多數(shù)運算符實施重載。外部普通函數(shù)類友元函數(shù)是類組員函數(shù)組員運算符函數(shù)定義語法形式組員運算符函數(shù)原型在類內部申明格式為:classX{//...返回類型operator運算符(形參表);//...};30.虛函數(shù)引入,基類指針能夠指向它公有派生類對象,用“指針”才有虛函數(shù)問題。引入派生類后,因為派生類是由基類派生出來,所以指向基類指針和指向派生類指針是相關:(1)基類指針能夠指向它公有派生類對象。但不允許指向它私有派生類對象。(2)派生類指針不允許指向它基類對象。(3)基類指針指向它公有派生類對象時,只能用它來直接訪問派生類中從基類繼承來組員,而不能直接訪問公有派生類中定義新組員。31.有時在程序設計時,使用對象指針目標是為了動態(tài)和靈活,即當指針指向不一樣對象(基類對象或派生類對象)時,能分別調用不一樣類組員函數(shù)。假如將函數(shù)說明為虛函數(shù),就能實現(xiàn)這種動態(tài)調用功效。虛函數(shù)定義是在基類中進行:virtual函數(shù)類型函數(shù)名(形參表){函數(shù)體}32.純虛函數(shù)通常形式以下:virtual函數(shù)類型函數(shù)名(參數(shù)表)=0;假如一個類最少有一個純虛函數(shù),那么就稱該類為抽象類【第6章】33.模板概念模板是C++語言一個主要特征。模板是實當代碼重用機制一個工具,它能夠實現(xiàn)類型參數(shù)化,即把類型定義為參數(shù),從而實現(xiàn)了代碼重用,使得一段程序能夠用于處理多個不一樣類型對象,大幅度地提升程序設計效率。34.函數(shù)模板和類模板(1).函數(shù)模板與模板函數(shù)所謂函數(shù)模板,就是寫一個函數(shù)模子,用這個模子套印出許多功效相同,參數(shù)類型和返回類型不一樣函數(shù)。模板函數(shù):函數(shù)模板實例化后詳細函數(shù)。(2)類模板和模板類類模板(也稱為類屬類或類生成類)是:允許用戶為類定義一個模子,使得類中一些數(shù)據(jù)組員,一些組員函數(shù)參數(shù)或者返回值,能取任意數(shù)據(jù)類型【第7章】35.C++流概念:cin>>對象;cout<<對象;整型、實型、字符、字符串等有格式輸入輸出36.文件輸入輸出:在含有文件操作程序中,必須有以下預處理命令:#include<fstream.h>open、close函數(shù)文本文件、二進制文件讀寫。復習思索題、即考試A、B、C、D選擇題和填空題一、分清下面概念,那些是正確,那些是錯誤1.面向對象程序主要結構特點之一√程序通常由類定義和類使用兩部分組成?!坛绦蛑幸磺胁僮鞫际墙?jīng)過向對象發(fā)送消息來實現(xiàn)?!脸绦蛑幸磺胁僮鞫际墙?jīng)過調用函數(shù)來實現(xiàn)?!脸绦蛲ǔS珊瘮?shù)定義和函數(shù)使用兩部分組成。×程序通常由變量定義和變量使用兩部分組成。×程序通常由對象定義和對象使用兩部分組成?!脸绦蛑幸磺胁僮鞫际墙?jīng)過定義函數(shù)來實現(xiàn)?!脸绦蛑幸磺胁僮鞫际墙?jīng)過定義類來實現(xiàn)。2.對象是現(xiàn)實世界中一個實體,其特征√每個對象必須有一個名字,以示區(qū)分?!逃袑傩悦枋觥!逃幸唤M操作。√創(chuàng)建對象時會自動調用結構函數(shù)?!帘仨氂幸粋€關鍵字?!烈欢ㄒ远x一個結構函數(shù)?!烈卸€以上數(shù)據(jù)。3.面向對象系統(tǒng)特征是√抽象性√封裝性 √繼承性√多態(tài)性×完整性×唯一性×二義性 ×安全性4.類概念是√對一組具備共同屬性特征和行為特征對象抽象?!掏活悢?shù)據(jù)集合?!令惣词菍ο髷?shù)組?!粮鞣N對象集合?!镣唤y(tǒng)計集合?!镣惡瘮?shù)集合?!连F(xiàn)實世界中全部對象集合。5.類和對象之間關系是√抽象和詳細關系?!填愋秃妥兞恐g關系?!探Y構類型和結構體關系?!炼x和被定義關系?!琳{用和被調用關系?!令惣词菍ο髷?shù)組?!列秃椭店P系?!林羔樅退笇ο箨P系。6.結構函數(shù)特征√結構函數(shù)函數(shù)名與類名完全相同。√結構函數(shù)能夠有形式參數(shù)。√結構函數(shù)能夠重載。√在創(chuàng)建對象時被執(zhí)行。×在程序編譯時被執(zhí)行?!猎趧?chuàng)建類時被執(zhí)行?!猎诔绦蜓b入內存時被執(zhí)行?!两Y構函數(shù)必須說明返回類型?!脸绦蛑幸姓{用結構函數(shù)語句。7.析構函數(shù)特征√一個類中只能定義一個析構函數(shù)。√析構函數(shù)名與類名相同并加~?!滔到y(tǒng)會自動調用析構函數(shù)?!廖鰳嫼瘮?shù)定義只能在類體內?!廖鰳嫼瘮?shù)能夠有多個參數(shù)?!烈粋€類中能定義多個析構函數(shù)。關于組員函數(shù)特征下述描述√組員函數(shù)能夠重載?!探M員函數(shù)能夠設置參數(shù)缺省值?!探M員函數(shù)能夠是靜態(tài)。√類定義中只給出組員函數(shù)原型,而組員函數(shù)在類外定義?!填惗x中只給出組員函數(shù)原型,而組員函數(shù)在類外定義并在之前加inline?!炭稍陬悆榷x?!两M員函數(shù)一定要在類內定義?!两M員函數(shù)一定是內置函數(shù)。9.以下各種函數(shù)中,是本類組員函數(shù)√結構函數(shù) √析構函數(shù) √拷貝結構函數(shù)√缺省參數(shù)結構函數(shù)×友元函數(shù)×主函數(shù)×普通函數(shù)×標準函數(shù)10.在友元函數(shù)下面說法中,正確是:√友元函數(shù)是獨立于當前類外部函數(shù)。×一個友元函數(shù)不能同時定義為兩個類友元函數(shù)×友元函數(shù)必須在類外部定義?!猎谕獠慷x友元函數(shù)時,必須加friend11.友元作用是什么,一個類友元能夠訪問該類什么√提升程序運行效率。×加強類封裝性?!翆崿F(xiàn)數(shù)據(jù)隱藏性?!猎黾咏M員函數(shù)種類√全部組員 ×只能是私有組員 ×只能是公有組員 ×組員函數(shù)12.對基類和派生類關系描述中√派生類(如公共汽車)是基類(汽車)子集?!膛缮愂腔惗x擴延?!滩徽撃姆N派生,基類私有組員不允許派生類組員函數(shù)訪問?!滩徽撃姆N派生,基類公有組員允許派生類組員函數(shù)訪問?!滩徽撃姆N派生,基類保護組員允許派生類組員函數(shù)訪問?!僚缮愂腔愒敿毣??!僚缮愂腔惤M合?!敛徽撃姆N派生,基類保護組員不允許派生類組員函數(shù)訪問。13.派生類對象對它基類組員中,能夠訪問是√公有繼承公有組員?!凉欣^承保護組員?!凉欣^承私有組員?!凉欣^承全部組員?!了接欣^承公有組員?!了接欣^承私有組員?!了接欣^承全部組員?!了接欣^承保護組員。14.對虛基類正確闡述√定義派生類時,在基類名前加virtual?!炼x基類時加virtual?!两M員函數(shù)前加virtual?!猎谂缮惷凹觱irtual。15.一個派生類有多個父類,而這多個父類又有一個共同基類,這種情況,才考慮設置虛基類,其目標是:√消除二義性。簡化程序。提升運行效率。降低目標代碼。16.C++中函數(shù)能夠重載:(P31)√只要函數(shù)參數(shù)類型不一樣,√或者參數(shù)個數(shù)不一樣,√或者二者兼有之,兩個以上函數(shù)能夠同名。17.不可重載函數(shù)是:√析構函數(shù)。(能夠:)普通組員函數(shù)。友元函數(shù)。外部函數(shù)。 18.可定義作運算符重載函數(shù)是√組員函數(shù)?!逃言瘮?shù)。√類以外函數(shù)。×析構函數(shù)?!翢o返回值函數(shù)。×結構函數(shù)。19.不能重載運算符√::√?: &&[]new++()delete20.關于動態(tài)聯(lián)編描述,動態(tài)聯(lián)編稱為運行時多態(tài)性是經(jīng)過什么來實現(xiàn)。√動態(tài)聯(lián)編是以虛函數(shù)為基礎?!虅討B(tài)聯(lián)編是在運行時確定所調用函數(shù)。√動態(tài)聯(lián)編調用函數(shù),是用基類對象指針或對象引用所指函數(shù)?!汤^承和虛函數(shù)。動態(tài)聯(lián)編是在編譯時確定操作函數(shù)。函數(shù)重載和運算符重載。 運算符重載。 函數(shù)重載。21.說白了,經(jīng)過基類指針或引用來訪問基類和派生類中同名函數(shù),才考慮虛函數(shù)。其描述:√虛函數(shù)是在基類中用virtual說明,派生類中重新定義函數(shù)?!撂摵瘮?shù)是一個static類型組員函數(shù)?!撂摵瘮?shù)是一個非組員函數(shù)?!僚缮愄摵瘮?shù)與基類虛函數(shù)具備不一樣參數(shù)個數(shù)和類型。22.抽象類闡述:√假如一個類最少有一個純虛函數(shù),那么該類為抽象類?!坛橄箢愔荒苡米髌溆囝惢?,不能建立抽象類對象?!坛橄箢惸軌蛴脕矶x指針?!脸橄箢惸軌蜃鳛槟硞€函數(shù)返回類型。23.進行文件操作時需要包含文件,C++用cout和cin進行輸出/輸入操作時需要包含文件?!蘤stream.h √iostream.h stdio.h stdlib.hstring.hmath.h24.面向對象程序設計是不一樣于傳統(tǒng)程序設計一個新程序設計范型。面向對象程序設計被認為是程序設計方法學一場實質性革命(在導學中)。25.面向對象(O-O)程序設計是一個新程序設計范型。這種范型主要特征是:程序=對象+消息26.現(xiàn)實世界中,對象通常能夠表示為:屬性+行為27.在定義類時,第一個保留字。(class)28.將數(shù)據(jù)結構和作用于數(shù)據(jù)結構上操作組成一個實體,數(shù)據(jù)表示方式和對數(shù)據(jù)操作細節(jié)被隱藏起來,這是面向對象程序設計(封裝性)。而函數(shù)重載是(多態(tài)性)。29.C++中類定義內部,英文private段,protected段,public段(私有段保護段公有段)30.定義了類A,在主函數(shù)中如出現(xiàn):A*p,obj,ob[10];語句。(則p是對象指針、obj是對象、ob是對象數(shù)組。)31.C++運算符:<<>>newdelete(輸出輸入申請釋放)32.在C++定義類中,組員可分為二類,有三個段。(數(shù)據(jù)組員函數(shù)組員私有公有保護)33.在一個類定義中,能夠申明友元,友元能夠是三種友元。(友元函數(shù)友元組員友元類)34.C++中,函數(shù)說明為voidfun(int&i)引用叫,(參數(shù)引用),函數(shù)說明為void&fun(inti)引用叫。(返回值引用)35.繼承機制允許派生類繼承基類什么,(數(shù)據(jù)和操作)同時,派生類還能夠增加新什么。(數(shù)據(jù)和操作)36.類外函數(shù)作運算符重載時,只能訪問類(公有)組員,而用類友元運算符函數(shù)或組員運算符函數(shù)重載能夠訪問類(全部)組員。37.一個類模板允許用戶為類定義什么?(一個模式(子))使得類中一些數(shù)據(jù)組員、一些組員函數(shù)參數(shù)或返回值,能取什么類型?(任意數(shù)據(jù)類型)38.模板是實當代碼重用機制一個工具,函數(shù)模板實例化、類模板實例化分別稱為(模板函數(shù)、模板類)復習之二、閱讀程序寫運行結果、程序填空(把這些程序真正讀懂,不要背答案?。?.函數(shù)、函數(shù)調用、函數(shù)原型(包含參數(shù)引用、返回值引用)2.類定義和定義對象(包含對象指針)3.派生和繼承應用4.派生類結構函數(shù)和析構函數(shù)執(zhí)行次序5.函數(shù)重載和運算符重載復習思索題1.#include<iostream.h>intadd(int,int);intmain(){intx,y,sum;cout<<”輸入二個整數(shù):”;cin>>x>>y;sum=add(x,y);cout<<”x+y=”<<sum<<endl;return0;}intadd(inta,intb){intc;c=a+b;returnc;}答案:輸入二個整數(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=10k=253.#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)在進入Base基類結構函數(shù)\n";i=n;}~Base(){cout<<"現(xiàn)在進入Base基類析構函數(shù)\n";}voidshowi(){cout<<i<<endl;}private:inti;};classDerive:publicBase{public:Derive(intn,intm):Base(m){cout<<"現(xiàn)在進入Derive派生類結構函數(shù)\n";j=n;}~Derive(){cout<<"現(xiàn)在進入Derive派生類析構函數(shù)“<<endl;}voidshowj(){cout<<j<<endl;}private:intj;};voidmain(){Deriveobj(30,40);obj.showi();obj.showj();}答案:現(xiàn)在進入Base基類結構函數(shù)現(xiàn)在進入Derive派生類結構函數(shù)4030現(xiàn)在進入Derive派生類析構函數(shù)現(xiàn)在進入Base基類析構函數(shù)7.#include<iostream.h>classTime{ chara[9];public:Time(ints=0,intm=0,inth=0){hours=h;minutes=m;seconds=s;}voidshow(){cout<<"時間:"<<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();}答案:時間:12:48:30時間: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++();private:char*p;};voidStr::operator++(){Strtemp("\0");temp.p=newchar[2*strlen(this->p)+1];strcpy(temp.p,this->p);strcat(temp.p,this->p);this->p=newchar[2*strlen(this->p)+1];strcpy(this->p,temp.p);}voidmain(){StrT1("ABCDXYZ");++T1;T1.show();}答案:字符串:ABCDXYZABCDXYZ9.下面程序定義一個類samp,有三類數(shù)據(jù)組員和一個結構函數(shù)和一個函數(shù)組員,填充程序缺乏部分,使其變成完整C++程序。#include<iostream.h>classSamp{protected:intb;.public:intc;(1)(intn,intm)//結構函數(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.下面程序定義一個類samp,有三類數(shù)據(jù)組員和一個結構函數(shù)和一個函數(shù)組員,填充程序缺乏部分,使其變成完整C++程序。#include<iostream.h>class(1){public:intc;(2)(intn,intm)//結構函數(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);//定義對象cout<<obj.get('a')<<endl;//輸出20cout<<obj.get('b')<<endl;//輸出30cout<<(5)<<endl;//輸出50}答案:⑴.Myclass⑵.Myclass⑶.get⑷.obj⑸.obj.c11.定義一個基類長方形Base,私有段有長a和寬b,公有段有結構函數(shù),能顯示長方形面積等。定義以該長方形為底面積派生類長方體Cuboid,有高h,有結構函數(shù),能顯示長方體體積。在主函數(shù)中定義長方體對象,其長、寬、高分別為10,20,5,顯示出長方體體積和長方形底面積。#include<iostream.h>classBase{//定義長方形public:Base(floata1=0,floatb1=0){(1)//公有段結構函數(shù)體}voidarea()//函數(shù)area()顯示長方形面積{cout<<"長方形面積是:"<<a*b<<endl;}floatgetr(){returna*b;}private:.floata,b;};classCuboid:publicBase{//定義以該長方形為底派生類長方體public:Cuboid(floata1,floatb1,floath1):(2)//結構函數(shù){h=h1;}void(3)()//顯示長方體體積函數(shù){cout<<"長方體體積是:"<<h*getr()<<endl;}private:floath;};voidmain(){(4)ob(10,20,5);//這里定義對象ob(5);//這里輸出長方形面積ob.body();//這里輸出長方體體積}答案:⑴.a=a1;b=b1;⑵.Base(a1,b1)⑶.body⑷.Cuboid⑸.ob.area()12.定義一個基類長方形Base,私有段有a和寬b,公有段有結構函數(shù),能顯示長方形面積等。定義以該長方形為底面積派生類長方體Cuboid,有高h,有結構函數(shù),能顯示長方體體積。在主函數(shù)中定義長方體對象,其長、寬、高分別為10,20,5,顯示出長方體體積和長方形底面積。#include<iostream.h>classBase{//定義長方形public:Base(floata1=0,floatb1=0){a=a1;b=b1;//公有段結構函數(shù)體}voidarea()//函數(shù)area()輸出顯示長方形面積{cout<<"長方形面積是:"<<(1)<<endl;}floatgetr(){returna*b;}//函數(shù)getr()計算長方形面積private:floata,b;};classCuboid:publicBase{//定義以該長方形為底派生類長方體public:Cuboid(floata1,floatb1,floath1):(2)//結構函數(shù){h=h1;}voidbody()//輸出顯示長方體體積函數(shù){cout<<"長方體體積是:"<<h*getr()<<endl;}private:floath;//h是長方體高};voidmain(){(3)ob(10,20,5);//這里定義對象ob(4);//這里調用函數(shù),輸出長方形面積(5);//這里調用函數(shù),輸出長方體體積}答案:⑴.a*b;⑵.Base(a1,b1)⑶.Cuboid⑷.ob.area()⑸.ob.body()

復習之三、程序設計題(

把這些程序真正讀懂)1.C++基礎知識2.定義類、組員函數(shù)及結構函數(shù)習題來自《VC++6.0面向對象程序設計試驗提要》1.下面是一個C程序,改寫它,使它采取C++格調I/O語句。#include<stdio.h>←#include<iostream.h>voidmain(){inta,b,d,min;printf("輸入兩個整數(shù):");←cout<<"輸入兩個整數(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++程序,從鍵盤輸入二個任意大小數(shù),在屏幕上從小到大輸出這二個數(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.定義一個基類圓Circle,私有段有圓半徑,公有段有結構函數(shù),能顯示圓面積等。定義派生類Ex_square為圓外切正方形,有結構函數(shù),能顯示正方形面積。在主函數(shù)中定義外切正方形對象,其圓半徑為10,顯示二者面積。答案:#include<iostream.h>classCircle{floatr;//申明一個圓類public:Circle(floatx=0){r=x;}//結構函數(shù)voidarea1()//函數(shù)area()顯示圓面積{cout<<"圓面積是:"<<3.14*r*r<<endl;}floatgetr(){returnr;}private:floatr;};classEx_square:publicCircle{//派生一個圓外切正方形類public:Ex_square(floatx):circle(x){}//結構函數(shù)voidarea2()//函數(shù)area()顯示正方形面積{cout<<"外切正方形面積是:"<<4*getr()*getr()<<endl;}};voidmain(){Ex_squareob(10);ob.area1();ob.area2();}4.【習題3.32】建立類Cylinder,Cylinder結構函數(shù)被傳遞了兩個double值,分別表示圓柱體半徑和高。用類cylinder計算圓柱體體積,并存放在一個double變量中。在類Cylinder中包含一個組員函數(shù)vol,用來顯示每個Cylinder對象體積。(數(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;}private:doubler,h;dou

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論