国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

理解類引用這種類型

2019-11-18 18:42:01
字體:
來源:轉載
供稿:網友
問題:
書中寫到:--------------------類的引用是一種類型,它不是對對象的引用,也不是對類的引用,而是對類的類型的引用。類的引用類型定義了引用變量的類型。假設用戶定義了一個類:type    CMyClass=class   ...end下面定義一個新類的引用類型,與下面的類相關:type MyClassRef=calss of CMyClass這樣就聲明了兩個類型的變量:aClassRef:MyClassRef;aObject:CMyClass;其中第一個變量引用一個對象,第二個引用類:aClassRef=CMyClass;aObject=CMyClass.Create;--------------------這一段我看不明白,請各位解釋一下。謝謝
來自:Pipi., 時間:2002-2-8 23:13:00, ID:916427
另外舉一個例子吧,比如我可以寫一個函數type TControlClass = class of TControl;PRocedure insert_control(cls:TControlClass);beginobj;=cls.Create(application);把obj放進formend;調用的時候,如果是 insert_control(TEdit) 那么放進form的是一個編輯框如果是 insert_control(TButton) 那么放進form的是一個按鈕謝復雜一點就是var ctl:TControlClass;ctr:=TEdit;insert_control(ctl)------------------------------注意上面我們用到TButton和TEdit它們都有共同的祖先TControl我們定義一個基類,然后通過傳遞不同的子類,那么一個函數只寫一次就實現不同的效果
來自:Holyowl, 時間:2002-2-8 23:26:00, ID:916440
類引用的用途就是創建在編譯器無法確定的對象,舉個列子:Type  TControlCls = Class of TControl;function CreateComponent(ControlCls: TControlCls): TControl;begin  result:=ControlCls.Create(Form1);  ...end;調用時如:CreateComponent(TMemo);//創建TMemo對象CreateComponent(TEdit);//創建TEdit對象
來自:renrf, 時間:2002-2-9 0:07:00, ID:916478
謝謝,我書上的例子怎樣理解呢?
來自:Pipi., 時間:2002-2-9 0:29:00, ID:916503
你書上的例子就更簡單了,根本沒講到實際的用途 就是出現aClassRef的地方你把它看成CMyClass好了
來自:testnet, 時間:2002-2-16 1:17:00, ID:923102
提前提前,我還沒看明Type  TControlCls = Class of TControl;function CreateComponent(ControlCls: TControlCls): TControl;begin  result:=ControlCls.Create(Form1);  ...end;function CreateComponent(ControlCls: TControl): TControl;begin  result:=ControlCls.Create(Form1);  ...end;上面這兩個東東的結果不是一樣嗎?有會什么差別??我只注重結果
來自:Pipi., 時間:2002-2-16 1:26:00, ID:923112
當然不同了
來自:beta, 時間:2002-2-16 2:34:00, ID:923171
to testnet:  將你的兩個函數名分別改為 CreateComponent1 和 CreateComponent2  你象這樣編譯一下:    CreateComponent1(TEdit);    CreateComponent2(TEdit);  看出 結果 上的差別了吧?
來自:beta, 時間:2002-2-16 2:35:00, ID:923172
前者要求傳入一個 類, 而后者要求傳入一個 對象(類的實例)
來自:beta, 時間:2002-2-16 2:43:00, ID:923174
前一個函數將創建你傳入的類的一個實例,而后一個函數,沒有意義吧.
來自:Jhdandcl, 時間:2002-2-16 10:53:00, ID:923281
上面都說得較清楚了,type MyClassRef=calss of CMyClass //表示MyClassRef為指向CMyClass或其父類的指針.
來自:leasun, 時間:2002-2-16 11:37:00, ID:923316
類的引用就像指向類的指針一樣
來自:testnet, 時間:2002-2-16 12:41:00, ID:923408
這個特性不錯
來自:xiangya, 時間:2002-2-21 1:33:00, ID:931109 | 編輯
沒有說清楚![:D]看看這里的解釋:
準確的說,這是一種編譯器提供的原始二次識別的方法."我定義很多的類,當然,他們是一個系統的,然后,我把它們統統成為某某類,當你需要某個類或者類的實例(通常是后者)的時候,你就告訴我那個類的名稱,然后,我就給你那個類,或者類的實例"其實這也不清楚,在后面,"你是一個豬,豬類,他是一個馬,馬類,我是一個頭人,人類,"好了,"我們這些類都統統稱為動物類"(實際生活中有動物類嗎[?]沒有!都是抽象出來的概念)那么,動物類的實例我們稱為某個動物,現在,屠宰場要買一個動物,好!到底是要一個豬呢,還是一個馬嗎[?]反正不會是一頭人啦.這樣,我們送去一個豬類或者馬類(記住,這是類型),不管如何,屠宰場就會得到一個動物.最后,某個人類的實例就有得吃了[:D]好好想想,然后對照下面,Type  TControlCls = Class of TControl;function CreateComponent(ControlCls: TControlCls): TControl;//這里是在問"你是給我送個馬類還是豬類呢[?]"http://結果呢,下面的代碼送了一個窗口類[:)]begin  result:=ControlCls.Create(Form1);  ...end;function CreateComponent(ControlCls: TControl): TControl;//在問,你要那一個豬[?]//答:我要窗口1的那個豬[^]begin  result:=ControlCls.Create(Form1);  ...end;好了,這下沒有明白的話,那真是豬.[:)]
最后一種表達:
你需要什么樣的類型,那好,你告訴我你要的類型,我給建一個這樣的對象出來。
[:(!][:(!]聲明,千萬不要誤會,我沒有罵人,我想這樣說,您的印象非常之深刻,更好理解.

上一篇:剖析TThread類

下一篇:一個計算器的代碼,歡迎大家點評

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 白山市| 峡江县| 河北省| 龙川县| 延川县| 汝南县| 福泉市| 邓州市| 蒲江县| 呼和浩特市| 崇文区| 九寨沟县| 柘荣县| 通河县| 涟源市| 奉节县| 克什克腾旗| 昂仁县| 鄂尔多斯市| 泾川县| 吉隆县| 许昌市| 巫山县| 区。| 南城县| 绥阳县| 睢宁县| 布尔津县| 微山县| 上思县| 苏尼特右旗| 米易县| 文成县| 闽清县| 邻水| 石景山区| 沙雅县| 阿瓦提县| 威宁| 乌审旗| 灵山县|