面向对象课件.pptx

面向对象课件.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共447页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

面向對象的設計方法;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;inlinevoidPoint::

Init(intinitX,intinitY)

{

X=initX;

Y=initY;

}

inlineintPoint::GetX()

{

returnX;

}

inlineintPoint::GetY()

{

returnY;

};90;91;92;93;94;95;96;97;98;99;100;101;102;103;104;105;106;107;108;構造函數的實現:

Clock::Clock(intNewH,intNewM,intNewS)

{

Hour=NewH;

Minute=NewM;

Second=NewS;

}

建立對象時構造函數的作用:

voidmain()

{

Clockc(0,0,0);//隱含調用構造函數,將初始值作為實參。

c.ShowTime();

};110;111;112;113;114;115;116;117;118;119;120;121;析構函數(destructor)也是一個特殊的成員函數,它的作用與構造函數相反.

它的名字是類名的前面加一個“~”符號。在C++中“~”是位取反運算符,從這點也可以想到:析構函數是與構造函數作用相反的函數。

當對象的生命期結束時,會自動執行析構函數。

比如說如果在一個函數中定義了一個對象(它是自動局部對象),當這個函數被調用結束時,對象應該釋放,在對象釋放前自動執行析構函數。;析構函數的作用並不是刪除對象,而是在撤銷對象佔用的記憶體之前完成一些清理工作。

最典型的情況是構造對象時,在構造函數中分配了資源,例如動態申請了一些記憶體單元,在對象消失時就要釋放這些記憶體單元。一般由一系列的delete組成。

析構函數不返回任何值,沒有函數類型,也沒有函數參數。因此它不能被重載。一個類可以有多個構造函數,但只能有一個析構函數。;一般情況下,類的設計者應當在聲明類的同時定義析構函數,以指定如何完成“清理”的工作。

如果用戶沒有定義析構函數,C++編譯系統會自動生成一個析構函數,但它只是徒有析構函數的名稱和形式,實際上什麼操作都不進行。想讓析構函數完成任何工作,都必須在定義的析構函數中指定。;125;126;127;128;129;130;131;132;133;每個對象中的數據成員都分別佔有存儲空間,如果對同一個類定義了n個對象,則有n組同樣大小的空間以存放n個對象中的數據??員。但是,不同對象都調用同一個函數代碼段。

當不同對象的成員函數引用數據成員時,怎麼能保證引用的是所指定的對象的數據成員呢?

假如,對於定義的Box類,定義了3個同類對象a,b,c。如果有a.volume(),應該是引用對象a中的height,width和length,計算出長方體a的體積。如果有b.volume(),應該是引用對象b中的height,width和length,計算出長方體b的體積。而現在都用同一個函數段,系統怎樣使它分別引用a或b中的數據成員呢?;在每一個成員函數中都包含一個特殊的指針,這個指針的名字是固定的,稱為this。

它是指向本類對象的指針,它的值是當前被調用的成員函數所在的對象的起始地址。

例如,當調用成員函數a.volume時,編譯系統就把對象a的起始地址賦給this指針,於是在成員函數引用數據成員時,就按照this的指向找到對象a的數據成員。例如volume函數要計算height*width*length的值,實際上是執行:

(this->height)*(this->width)*(this->length)

由於當前this指向a,因此相當於執行:

(a.height)*(a.width)*(a.length)

這就計算出長方體a的體積。

同樣如果有b.volume(),編譯系統就把對象b的起始地址賦給成員函數volume的this指針,顯然計算出來的是長方體b的體積。;this指針是隱式使用的,它是作為參數被傳遞給成員函數的。本來,成員函數volume的定義

文档评论(0)

子不语 + 关注
官方认证
服务提供商

平安喜乐网络服务,专业制作各类课件,总结,范文等文档,在能力范围内尽量做到有求必应,感谢

认证主体菏泽喜乐网络科技有限公司
IP属地山东
统一社会信用代码/组织机构代码
91371726MA7HJ4DL48

1亿VIP精品文档

相关文档