




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
對象的構(gòu)造與析構(gòu)第一頁,共十七頁,2022年,8月28日一、對象構(gòu)造與析構(gòu)的作用完成實(shí)驗(yàn)報(bào)告中的任務(wù)1、任務(wù)2,對照課本內(nèi)容,理解構(gòu)造函數(shù)、析構(gòu)函數(shù)的調(diào)用方法與作用。完成實(shí)驗(yàn)任務(wù)3,觀察程序運(yùn)行的輸出結(jié)果,理解“復(fù)制”構(gòu)造函數(shù)在函數(shù)調(diào)用中的作用。第二頁,共十七頁,2022年,8月28日二、動(dòng)態(tài)內(nèi)存分配程序設(shè)計(jì)數(shù)組的定義:inta[10];只能說明長度不變的數(shù)組,而在實(shí)際應(yīng)用中,我們希望數(shù)組的長度可以隨時(shí)改變,或者由用戶設(shè)定,這個(gè)要求可以通過“動(dòng)態(tài)內(nèi)存分配”技術(shù)實(shí)現(xiàn)。動(dòng)態(tài)內(nèi)存分配:在程序運(yùn)行過程中,根據(jù)需要在內(nèi)存中進(jìn)行內(nèi)存分配,稱為動(dòng)態(tài)內(nèi)存分配。相關(guān)知識(shí)的學(xué)習(xí):(預(yù)習(xí)方法:運(yùn)行示例程序)第三頁,共十七頁,2022年,8月28日動(dòng)態(tài)內(nèi)存分配程序設(shè)計(jì)程序使用的內(nèi)存空間示意圖:棧區(qū)堆區(qū)全局?jǐn)?shù)據(jù)區(qū)程序代碼區(qū)棧區(qū)函數(shù)形參、局部變量在程序編譯時(shí)分配堆區(qū)在程序運(yùn)行過程中分配的存儲(chǔ)全局?jǐn)?shù)據(jù)區(qū)程序代碼區(qū)第四頁,共十七頁,2022年,8月28日C++堆內(nèi)存分配:運(yùn)算符new和delete1.new:
申請一個(gè)整型的空間:
int*ip; ip=newint;*ip=10;申請一個(gè)整型空間并同時(shí)初始化:
ip=newint(5);cout<<*ip<<endl;申請長度為10的一維數(shù)組(數(shù)組的長度是可變的) int*ap; ap=newint[10];//注意:不能對動(dòng)態(tài)數(shù)組初始化
for(intk=0;k<10;k++)cin>>ap[k];動(dòng)態(tài)內(nèi)存分配程序設(shè)計(jì)從堆中分配一個(gè)整型存儲(chǔ)空間,返回指向內(nèi)存的指針。從堆中分配一個(gè)整型存儲(chǔ)空間并初始化為5從堆中分配連續(xù)10個(gè)整型存儲(chǔ)空間第五頁,共十七頁,2022年,8月28日動(dòng)態(tài)內(nèi)存分配程序設(shè)計(jì)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:運(yùn)用動(dòng)態(tài)內(nèi)存分配申請一個(gè)數(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;動(dòng)態(tài)內(nèi)存分配程序設(shè)計(jì)第七頁,共十七頁,2022年,8月28日動(dòng)態(tài)內(nèi)存分配程序設(shè)計(jì)例2:程序可接收一個(gè)不定長的字符串:voidmain(){ char*cp; intlen; cout<<“請輸入字符串的長度:”;cin>>len; cp=newchar[len+1]; cin>>cp; cout<<cp<<endl;delete[]cp;}第八頁,共十七頁,2022年,8月28日動(dòng)態(tài)內(nèi)存分配程序設(shè)計(jì)例3:程序可接收一個(gè)不定長的字符串(帶輸入容錯(cuò))“容錯(cuò)”就是當(dāng)用戶輸入不正確時(shí),程序能對錯(cuò)誤進(jìn)行處理,確保程序不會(huì)產(chǎn)生嚴(yán)重后果。voidmain(){ char*cp; intlen,count=3;//最多可允許三次輸入錯(cuò)誤
do{ cout<<“請輸入字符串的長度(>0):”;cin>>len; } while(count-->0&&len>0); if(count==0)exit(0);//中止程序運(yùn)行
cp=newchar[len+1]; cin>>cp; cout<<cp<<endl; delete[]cp;}第九頁,共十七頁,2022年,8月28日動(dòng)態(tài)內(nèi)存分配程序設(shè)計(jì)實(shí)驗(yàn)任務(wù)4:編程實(shí)現(xiàn)可變長度的數(shù)組,并按要求設(shè)置斷點(diǎn),理解指針的運(yùn)用。(把實(shí)驗(yàn)結(jié)果記錄在作業(yè)本并提交)#include<iostream.h>voidmain(){intn,*ip,*tp; cin>>n;//輸入所需數(shù)組的長度
ip=newint[n];//此處設(shè)置斷點(diǎn)觀察ip的值,ip有什么意義?
for(intk=0;k<n;k++) cin>>ip[k];//在此處設(shè)置斷點(diǎn)觀察ip,k的變化
for(tp=ip;tp<ip+n;tp++) cout<<*tp<<‘
‘;//設(shè)置斷點(diǎn)觀察tp變化
delete[]ip;}//在此處設(shè)置斷點(diǎn),觀察ip的值,說明什么?第十頁,共十七頁,2022年,8月28日三、模擬時(shí)鐘(字符界面,必做題)
本程序以工程壓縮文件在網(wǎng)絡(luò)課堂提交。用類的方法模擬一個(gè)時(shí)鐘的功能,要求:時(shí)鐘對象的時(shí)間屬性用整型數(shù)據(jù)描述,私有成員;時(shí)鐘對象的功能:能以多種方式初始化時(shí)鐘對象(多種構(gòu)造方法)能調(diào)整時(shí)間,當(dāng)設(shè)置的時(shí)間數(shù)據(jù)不合理時(shí)能進(jìn)行判斷并修正;能讀出時(shí)間;能進(jìn)行加一秒的操作:該函數(shù)在加一秒達(dá)到24點(diǎn)時(shí)返回1,其它情況返回0。編寫一個(gè)程序(主函數(shù)),創(chuàng)建一個(gè)時(shí)鐘對象,并設(shè)置時(shí)鐘的時(shí)間為23:59:54,然后連續(xù)進(jìn)行10次加一秒操作,檢驗(yàn)時(shí)鐘是否可以正確進(jìn)位。(字符界面)第十一頁,共十七頁,2022年,8月28日練習(xí)三模擬時(shí)鐘
(windows界面,選做題)在完成練習(xí)二的基礎(chǔ)上進(jìn)行本實(shí)驗(yàn)。步驟:建立一個(gè)MFC的對話框應(yīng)用程序(界面如圖)。把練習(xí)二的“時(shí)鐘類”加入到“XXX_MFCDlg.cpp”(XXX在各人建立的工程中各不相同)的源程序文件中。注意:在原時(shí)鐘類程序中的main()函數(shù)不再使用,不要加入。時(shí)鐘類加在“XXXDlg.cpp”文件中的頭文件說明語句后。定義一個(gè)全局的時(shí)鐘類對象變量ck,初始化為0:0:0定義一個(gè)標(biāo)記“確認(rèn)”按鈕狀態(tài)的BOOL變量flag=FALSE第十二頁,共十七頁,2022年,8月28日練習(xí)三模擬時(shí)鐘
(windows界面)步驟:各控件連接變量:編輯框、下壓按鈕:“control”類型控件響應(yīng)要求“復(fù)位”:時(shí)間清零,相關(guān)按鈕狀態(tài)改變。對象變量設(shè)置時(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í)三模擬時(shí)鐘
(windows界面)步驟:控件響應(yīng)要求“輸入”:把時(shí)間編輯框設(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í)三模擬時(shí)鐘
(windows界面)步驟:控件響應(yīng)要求“確認(rèn)”:讀入編輯框中的時(shí)間數(shù)值后,設(shè)置對象ck的時(shí)間;并改變相關(guān)按鈕狀態(tài)。讀入編輯框中的時(shí)間數(shù)值:定義三個(gè)字符數(shù)組,長度10,用于存儲(chǔ)編輯框的時(shí)、分、秒數(shù)據(jù)分別把編輯框中的數(shù)據(jù)(字符型)讀入各數(shù)組中,選用函數(shù)GetWindowText(數(shù)組名,10);把字符數(shù)組中的字符型數(shù)據(jù)轉(zhuǎn)換為整型:定義三個(gè)臨時(shí)整型變量存儲(chǔ)時(shí)間數(shù)據(jù)用函數(shù)atoi(數(shù)組名)把字符數(shù)組中的字符型數(shù)據(jù)轉(zhuǎn)換為整型設(shè)置時(shí)間對象ck為新的時(shí)間編輯框設(shè)置為“只讀”:選用函數(shù)SetReadOnly(1);激活“輸入”按鈕:選用函數(shù)EnableWindow(TRUE);禁用“確認(rèn)”按鈕:選用函數(shù)EnableWindow(FALSE);“確認(rèn)”按鈕狀態(tài)標(biāo)記變量Flag=FALSE;第十五頁,共十七頁,2022年,8月28日步驟:設(shè)置計(jì)時(shí)器概念:windows計(jì)時(shí)器是一種輸入設(shè)備,它周期性地每經(jīng)過一個(gè)指定時(shí)間間隔就通知程序一次。在程序中,只要把時(shí)間間隔告訴windows,windows就能夠周期性地發(fā)送WM_TIMER消息。程序中響應(yīng)WM_TIMER消息,即產(chǎn)生定時(shí)變化的效果。在對話框程序文件中的成員函數(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í)三模擬時(shí)鐘
(windows界面)第十六頁,共十七頁,2022年,8月28日步驟:響應(yīng)計(jì)時(shí)器消息在ClassWizard的MessageMap選項(xiàng)卡中,找到WM_TIMER消息,添加成員函數(shù)后,在函數(shù)中加入下列語句://TODO:Addyourmessagehandlercodehereand/orcalldefault inth,m,s; charhstr[10],mstr[10],sstr[10]; if(!Flag)//在“確認(rèn)”按鈕為禁用狀態(tài)時(shí)
{ ck.IncreaseSecond();//時(shí)間對象ck加一秒處理
ck.Gettime(h,m,s);//讀出時(shí)間對象ck當(dāng)前時(shí)間
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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨夏機(jī)場軍地協(xié)議書
- 溫馨家庭協(xié)議書范本
- 臨時(shí)廚房用工協(xié)議書
- 內(nèi)部線路維修協(xié)議書
- 轎車燒毀賠償協(xié)議書
- 門前土地使用協(xié)議書
- 用工風(fēng)險(xiǎn)管理協(xié)議書
- 手機(jī)使用協(xié)議書孩子
- 凈菜采購協(xié)議書范本
- 私人抵押協(xié)議書范本
- 中建塔式起重機(jī)安裝、拆除專項(xiàng)施工方案
- 《光明乳業(yè)公司企業(yè)應(yīng)收賬款管理現(xiàn)狀及優(yōu)化建議(10000字論文)》
- 剪映專業(yè)版教學(xué)課件
- 大學(xué)生職業(yè)規(guī)劃學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 教育目的-(第五章)
- 海南會(huì)展經(jīng)濟(jì)中存在的主要問題淺析
- 2024年《13464電腦動(dòng)畫》自考復(fù)習(xí)題庫(含答案)
- DBJ50-T-481-2024 裝配式開孔鋼板組合剪力墻結(jié)構(gòu)住宅 技術(shù)標(biāo)準(zhǔn)
- 內(nèi)蒙古建筑圖集 DBJ-T 03-76-2018 自保溫砌塊建筑構(gòu)造圖集
- 物流營銷與客戶關(guān)系 習(xí)題答案 張廣敬
- 2024年包頭鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
評論
0/150
提交評論