版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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)存中進行內(nèi)存分配,稱為動態(tài)內(nèi)存分配。相關(guān)知識的學(xué)習(xí):(預(yù)習(xí)方法:運行示例程序)第三頁,共十七頁,2022年,8月28日動態(tài)內(nèi)存分配程序設(shè)計程序使用的內(nèi)存空間示意圖:棧區(qū)堆區(qū)全局數(shù)據(jù)區(qū)程序代碼區(qū)棧區(qū)函數(shù)形參、局部變量在程序編譯時分配堆區(qū)在程序運行過程中分配的存儲全局數(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];//下標法
//指針法: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)用戶輸入不正確時,程序能對錯誤進行處理,確保程序不會產(chǎ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ù)不合理時能進行判斷并修正;能讀出時間;能進行加一秒的操作:該函數(shù)在加一秒達到24點時返回1,其它情況返回0。編寫一個程序(主函數(shù)),創(chuàng)建一個時鐘對象,并設(shè)置時鐘的時間為23:59:54,然后連續(xù)進行10次加一秒操作,檢驗時鐘是否可以正確進位。(字符界面)第十一頁,共十七頁,2022年,8月28日練習(xí)三模擬時鐘
(windows界面,選做題)在完成練習(xí)二的基礎(chǔ)上進行本實驗。步驟:建立一個MFC的對話框應(yīng)用程序(界面如圖)。把練習(xí)二的“時鐘類”加入到“XXX_MFCDlg.cpp”(XXX在各人建立的工程中各不相同)的源程序文件中。注意:在原時鐘類程序中的main()函數(shù)不再使用,不要加入。時鐘類加在“XXXDlg.cpp”文件中的頭文件說明語句后。定義一個全局的時鐘類對象變量ck,初始化為0:0:0定義一個標記“確認”按鈕狀態(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);禁用“確認”按鈕:選用函數(shù)EnableWindow(FALSE);“確認”按鈕狀態(tài)標記變量Flag=FALSE;第十三頁,共十七頁,2022年,8月28日練習(xí)三模擬時鐘
(windows界面)步驟:控件響應(yīng)要求“輸入”:把時間編輯框設(shè)置為可輸入狀態(tài),并改變相關(guān)按鈕狀態(tài)。禁用“輸入”按鈕:選用函數(shù)EnableWindow(FALSE);激活“確認”按鈕:選用函數(shù)EnableWindow(TRUE);“確認”按鈕狀態(tài)標記變量Flag=TRUE;取消編輯框“只讀”狀態(tài):選用函數(shù)SetReadOnly(0);第十四頁,共十七頁,2022年,8月28日練習(xí)三模擬時鐘
(windows界面)步驟:控件響應(yīng)要求“確認”:讀入編輯框中的時間數(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);禁用“確認”按鈕:選用函數(shù)EnableWindow(FALSE);“確認”按鈕狀態(tài)標記變量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)//在“確認”按鈕為禁用狀態(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車輛管理責(zé)任制度
- 試述合同的不安抗辯權(quán)制度
- 2026年及未來5年市場數(shù)據(jù)中國透水混凝土行業(yè)發(fā)展運行現(xiàn)狀及發(fā)展趨勢預(yù)測報告
- 2025年今年的事業(yè)編考試題目及答案
- 診斷學(xué)概論:胃鏡檢查適應(yīng)癥課件
- 2025年山東非事業(yè)編財務(wù)崗筆試及答案
- 2025年重慶事業(yè)編考試b類答案
- 2025年婁底治安支隊考試筆試及答案
- 2025年新化教師筆試及答案
- 2025年五方面人員考試筆試題及答案
- 《綜合智慧能源管理》課件-項目四 新能源管理的應(yīng)用HomerPro仿真軟件
- 2026屆山東省高考質(zhì)量測評聯(lián)盟大聯(lián)考高三上學(xué)期12月聯(lián)考歷史試題(含答案)
- 2026北京成方金融科技有限公司社會招聘12人參考筆試試題及答案解析
- 銷售執(zhí)行流程標準化體系
- 2025年畜牧對口單招題庫及答案(可下載)
- 放射科主任年終述職報告
- GB/T 33000-2025大中型企業(yè)安全生產(chǎn)標準化管理體系要求
- 人民日報用稿通知書
- 2025年妊娠期梅毒考試題及答案
- 淺談國土年度變更調(diào)查及林草濕荒監(jiān)測區(qū)別
- 泌尿外科副高高級職稱真題及答案
評論
0/150
提交評論