




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
對象的構(gòu)造與析構(gòu)第一頁,共十七頁,2022年,8月28日一、對象構(gòu)造與析構(gòu)的作用完成實驗報告中的任務(wù)1、任務(wù)2,對照課本內(nèi)容,理解構(gòu)造函數(shù)、析構(gòu)函數(shù)的調(diào)用方法與作用。完成實驗任務(wù)3,觀察程序運行的輸出結(jié)果,理解“復(fù)制”構(gòu)造函數(shù)在函數(shù)調(diào)用中的作用。第二頁,共十七頁,2022年,8月28日二、動態(tài)內(nèi)存分配程序設(shè)計數(shù)組的定義:inta[10];只能說明長度不變的數(shù)組,而在實際應(yīng)用中,我們希望數(shù)組的長度可以隨時改變,或者由用戶設(shè)定,這個要求可以通過“動態(tài)內(nèi)存分配”技術(shù)實現(xiàn)。動態(tài)內(nèi)存分配:在程序運行過程中,根據(jù)需要在內(nèi)存中進(jìn)行內(nèi)存分配,稱為動態(tài)內(nèi)存分配。相關(guān)知識的學(xué)習(xí):(預(yù)習(xí)方法:運行示例程序)第三頁,共十七頁,2022年,8月28日動態(tài)內(nèi)存分配程序設(shè)計程序使用的內(nèi)存空間示意圖:棧區(qū)堆區(qū)全局?jǐn)?shù)據(jù)區(qū)程序代碼區(qū)棧區(qū)函數(shù)形參、局部變量在程序編譯時分配堆區(qū)在程序運行過程中分配的存儲全局?jǐn)?shù)據(jù)區(qū)程序代碼區(qū)第四頁,共十七頁,2022年,8月28日C++堆內(nèi)存分配:運算符new和delete1.new:
申請一個整型的空間:
int*ip; ip=newint;*ip=10;申請一個整型空間并同時初始化:
ip=newint(5);cout<<*ip<<endl;申請長度為10的一維數(shù)組(數(shù)組的長度是可變的) int*ap; ap=newint[10];//注意:不能對動態(tài)數(shù)組初始化
for(intk=0;k<10;k++)cin>>ap[k];動態(tài)內(nèi)存分配程序設(shè)計從堆中分配一個整型存儲空間,返回指向內(nèi)存的指針。從堆中分配一個整型存儲空間并初始化為5從堆中分配連續(xù)10個整型存儲空間第五頁,共十七頁,2022年,8月28日動態(tài)內(nèi)存分配程序設(shè)計2.Delete:
把申請的堆內(nèi)存空間還給系統(tǒng):
int*ip; ip=newint;*ip=10;
deleteip; int*ap; ap=newint[10]; for(intk=0;k<10;k++)cin>>ap[k];
delete
[]ap;//表示歸還一組空間第六頁,共十七頁,2022年,8月28日例1:運用動態(tài)內(nèi)存分配申請一個數(shù)組,長度從外部輸入:
intn,*ip,*tp; cin>>n; ip=newint[n]; for(intk=0;k<n;k++)cin>>ip[k];//下標(biāo)法
//指針法:ip固定
for(k=0;k<n;k++)*(ip+k)=2*(ip+k); //指針法:tp可變
for(tp=ip;tp<ip+n;tp++)*tp=2*tp; delete[]ip;思考題:這樣的語句有什么問題?for(;ip<ip+n;ip++)*ip=2*ip;動態(tài)內(nèi)存分配程序設(shè)計第七頁,共十七頁,2022年,8月28日動態(tài)內(nèi)存分配程序設(shè)計例2:程序可接收一個不定長的字符串:voidmain(){ char*cp; intlen; cout<<“請輸入字符串的長度:”;cin>>len; cp=newchar[len+1]; cin>>cp; cout<<cp<<endl;delete[]cp;}第八頁,共十七頁,2022年,8月28日動態(tài)內(nèi)存分配程序設(shè)計例3:程序可接收一個不定長的字符串(帶輸入容錯)“容錯”就是當(dāng)用戶輸入不正確時,程序能對錯誤進(jìn)行處理,確保程序不會產(chǎn)生嚴(yán)重后果。voidmain(){ char*cp; intlen,count=3;//最多可允許三次輸入錯誤
do{ cout<<“請輸入字符串的長度(>0):”;cin>>len; } while(count-->0&&len>0); if(count==0)exit(0);//中止程序運行
cp=newchar[len+1]; cin>>cp; cout<<cp<<endl; delete[]cp;}第九頁,共十七頁,2022年,8月28日動態(tài)內(nèi)存分配程序設(shè)計實驗任務(wù)4:編程實現(xiàn)可變長度的數(shù)組,并按要求設(shè)置斷點,理解指針的運用。(把實驗結(jié)果記錄在作業(yè)本并提交)#include<iostream.h>voidmain(){intn,*ip,*tp; cin>>n;//輸入所需數(shù)組的長度
ip=newint[n];//此處設(shè)置斷點觀察ip的值,ip有什么意義?
for(intk=0;k<n;k++) cin>>ip[k];//在此處設(shè)置斷點觀察ip,k的變化
for(tp=ip;tp<ip+n;tp++) cout<<*tp<<‘
‘;//設(shè)置斷點觀察tp變化
delete[]ip;}//在此處設(shè)置斷點,觀察ip的值,說明什么?第十頁,共十七頁,2022年,8月28日三、模擬時鐘(字符界面,必做題)
本程序以工程壓縮文件在網(wǎng)絡(luò)課堂提交。用類的方法模擬一個時鐘的功能,要求:時鐘對象的時間屬性用整型數(shù)據(jù)描述,私有成員;時鐘對象的功能:能以多種方式初始化時鐘對象(多種構(gòu)造方法)能調(diào)整時間,當(dāng)設(shè)置的時間數(shù)據(jù)不合理時能進(jìn)行判斷并修正;能讀出時間;能進(jìn)行加一秒的操作:該函數(shù)在加一秒達(dá)到24點時返回1,其它情況返回0。編寫一個程序(主函數(shù)),創(chuàng)建一個時鐘對象,并設(shè)置時鐘的時間為23:59:54,然后連續(xù)進(jìn)行10次加一秒操作,檢驗時鐘是否可以正確進(jìn)位。(字符界面)第十一頁,共十七頁,2022年,8月28日練習(xí)三模擬時鐘
(windows界面,選做題)在完成練習(xí)二的基礎(chǔ)上進(jìn)行本實驗。步驟:建立一個MFC的對話框應(yīng)用程序(界面如圖)。把練習(xí)二的“時鐘類”加入到“XXX_MFCDlg.cpp”(XXX在各人建立的工程中各不相同)的源程序文件中。注意:在原時鐘類程序中的main()函數(shù)不再使用,不要加入。時鐘類加在“XXXDlg.cpp”文件中的頭文件說明語句后。定義一個全局的時鐘類對象變量ck,初始化為0:0:0定義一個標(biāo)記“確認(rèn)”按鈕狀態(tài)的BOOL變量flag=FALSE第十二頁,共十七頁,2022年,8月28日練習(xí)三模擬時鐘
(windows界面)步驟:各控件連接變量:編輯框、下壓按鈕:“control”類型控件響應(yīng)要求“復(fù)位”:時間清零,相關(guān)按鈕狀態(tài)改變。對象變量設(shè)置時間為0:0:0編輯框輸出文本“0”:選用函數(shù)SetWindowText("0");編輯框設(shè)置為“只讀”:選用函數(shù)SetReadOnly(1);激活“輸入”按鈕:選用函數(shù)EnableWindow(TRUE);禁用“確認(rèn)”按鈕:選用函數(shù)EnableWindow(FALSE);“確認(rèn)”按鈕狀態(tài)標(biāo)記變量Flag=FALSE;第十三頁,共十七頁,2022年,8月28日練習(xí)三模擬時鐘
(windows界面)步驟:控件響應(yīng)要求“輸入”:把時間編輯框設(shè)置為可輸入狀態(tài),并改變相關(guān)按鈕狀態(tài)。禁用“輸入”按鈕:選用函數(shù)EnableWindow(FALSE);激活“確認(rèn)”按鈕:選用函數(shù)EnableWindow(TRUE);“確認(rèn)”按鈕狀態(tài)標(biāo)記變量Flag=TRUE;取消編輯框“只讀”狀態(tài):選用函數(shù)SetReadOnly(0);第十四頁,共十七頁,2022年,8月28日練習(xí)三模擬時鐘
(windows界面)步驟:控件響應(yīng)要求“確認(rèn)”:讀入編輯框中的時間數(shù)值后,設(shè)置對象ck的時間;并改變相關(guān)按鈕狀態(tài)。讀入編輯框中的時間數(shù)值:定義三個字符數(shù)組,長度10,用于存儲編輯框的時、分、秒數(shù)據(jù)分別把編輯框中的數(shù)據(jù)(字符型)讀入各數(shù)組中,選用函數(shù)GetWindowText(數(shù)組名,10);把字符數(shù)組中的字符型數(shù)據(jù)轉(zhuǎn)換為整型:定義三個臨時整型變量存儲時間數(shù)據(jù)用函數(shù)atoi(數(shù)組名)把字符數(shù)組中的字符型數(shù)據(jù)轉(zhuǎn)換為整型設(shè)置時間對象ck為新的時間編輯框設(shè)置為“只讀”:選用函數(shù)SetReadOnly(1);激活“輸入”按鈕:選用函數(shù)EnableWindow(TRUE);禁用“確認(rèn)”按鈕:選用函數(shù)EnableWindow(FALSE);“確認(rèn)”按鈕狀態(tài)標(biāo)記變量Flag=FALSE;第十五頁,共十七頁,2022年,8月28日步驟:設(shè)置計時器概念:windows計時器是一種輸入設(shè)備,它周期性地每經(jīng)過一個指定時間間隔就通知程序一次。在程序中,只要把時間間隔告訴windows,windows就能夠周期性地發(fā)送WM_TIMER消息。程序中響應(yīng)WM_TIMER消息,即產(chǎn)生定時變化的效果。在對話框程序文件中的成員函數(shù)OnInitDialog()中,加入下列語句:
//TODO:Addextrainitializationhere ck.Settime(0,0,0); m_Hour.SetWindowText("0"); m_Minute.SetWindowText("0"); m_Second.SetWindowText("0"); m_Hour.SetReadOnly(1); m_Minute.SetReadOnly(1); m_Second.SetReadOnly(1); SetTimer(1,1000,NULL);//每1000ms發(fā)送一次WM_TIMER練習(xí)三模擬時鐘
(windows界面)第十六頁,共十七頁,2022年,8月28日步驟:響應(yīng)計時器消息在ClassWizard的MessageMap選項卡中,找到WM_TIMER消息,添加成員函數(shù)后,在函數(shù)中加入下列語句://TODO:Addyourmessagehandlercodehereand/orcalldefault inth,m,s; charhstr[10],mstr[10],sstr[10]; if(!Flag)//在“確認(rèn)”按鈕為禁用狀態(tài)時
{ ck.IncreaseSecond();//時間對象ck加一秒處理
ck.Gettime(h,m,s);//讀出時間對象ck當(dāng)前時間
itoa(h,hstr,10);//數(shù)值數(shù)據(jù)轉(zhuǎn)換為字符
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年南昌市市級機(jī)關(guān)公開遴選考試真題
- 2025北京華商電力產(chǎn)業(yè)發(fā)展有限公司2025年搞笑畢業(yè)生招聘29人(第三批)模擬試卷及答案詳解(新)
- 2025年第2批次浙江寧波前灣產(chǎn)業(yè)集團(tuán)有限公司招聘9人考前自測高頻考點模擬試題及一套答案詳解
- 2025鄂爾多斯市伊金霍洛旗發(fā)展改革和科學(xué)技術(shù)局招聘公益性崗位人員的模擬試卷有答案詳解
- 2025安徽阜陽市界首市“政錄企用”人才引進(jìn)8人模擬試卷及答案詳解參考
- 2025年福建省水利水電科學(xué)研究院招聘博士研究生2人模擬試卷及答案詳解(考點梳理)
- 發(fā)動機(jī)車間能源管理系統(tǒng)技術(shù)協(xié)議書6篇
- 2025年太陽能熱發(fā)電系統(tǒng)項目建議書
- 2025年福建省廈門中煙益升華濾嘴棒有限責(zé)任公司招聘12人考前自測高頻考點模擬試題及答案詳解(歷年真題)
- 2025河南鄭州陽城醫(yī)院招聘25名模擬試卷及答案詳解(必刷)
- 2025年安全考試試題及答案復(fù)制
- 2025內(nèi)蒙古呼倫貝爾扎蘭屯市招聘社區(qū)工作者16人備考考試題庫附答案解析
- 2025年國家能源集團(tuán)寧夏煤業(yè)有限責(zé)任公司招聘筆試考試題庫+答案
- 姬松茸的課件
- 父母情+養(yǎng)育恩-2025-2026學(xué)年高二上學(xué)期感恩教育主題班會
- 2025年物流行業(yè)審核合規(guī)性提升方案
- 臺球廳吸引人活動方案
- 架空輸電線路線路檢測質(zhì)量缺陷及預(yù)控措施
- 人工智能與核醫(yī)學(xué)的深度融合與應(yīng)用探索
- 女生青春期性教育核心知識框架
- 日常膝關(guān)節(jié)護(hù)理
評論
0/150
提交評論