結構體能夠看做輕量級的類。spa
從使用的方式上講,結構體定義了即可直接使用,而類必須建立該類的對象纔可以使用。.net
從內存的管理上講,結構體對內存的佔用是由應用自動維護的,而類則須要手動建立該類的對象,當咱們再也不須要時要手動釋放。code
注意:相比輕量級的結構體,重量級的類能夠有更復雜的功能,同時類更加地體現面向對象的思想。orm
結構體與類的定義使用的關鍵字不一樣,分別是:record、class。對象
type {使用record定義一個結構體} MyRecord = record {定義結構體的屬性} name: String; {定義結構體的過程} procedure showName; {定義結構體的方法} function getName(): String; end; {使用class定義一個類} MyClass = class {定義類的屬性} name: String; {定義類的過程} procedure showName; {定義類的方法} function getName(): String; end;
結構體與類中過程與方法的具體實現blog
{ MyRecord } function MyRecord.getName: String; begin Result := name; end; procedure MyRecord.showName; begin showMessage(name); end; { MyClass } function MyClass.getName: String; begin Result := name; end; procedure MyClass.showName; begin showMessage(name); end; end.
procedure TForm1.Button1Click(Sender: TObject); var {在此聲明結構體後即可直接使用} mRecord: MyRecord; {在此聲明類後還須要建立該類的對象} mClass: MyClass; begin {操做結構體中的屬性、過程、方法} mRecord.name :='mRecord_name'; showMessage(mRecord.name); showMessage(mRecord.getName); mRecord.showName(); {這裏須要先建立類的對象} mClass := MyClass.Create(); {操做類中的屬性、過程、方法} mClass.name :='mClass_name'; showMessage(mClass.name); showMessage(mClass.getName); mClass.showName(); end;
--------------------- 本文來自 鬼A魅 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/u014046591/article/details/48937277?utm_source=copy內存