轉:Delphi2010新發現-類的構造和析構函數功能

Delphi2010發布了.

雖然憑著對Delphi的熱愛第一時間就安裝了,但是現在可能是年紀大了,對新事物缺乏興趣了.一直都沒有仔細研究.

今天有點時間試了一下新功能.

本來C#和Delphi.NET是支持類的構造函數/析構函數的(注意不是實例的構造和析構).也就是在模塊初始化/卸載的時候會調用.

這樣有很多好處,比如說類的靜態變量的初始化什么的都可以在這里做.

Delphi For Win32對這方面的需求還不是很大.

第一個原因.歷史上舊版Delphi不支持靜態變量.只能用Unit的全局變量+類函數來模擬.所以類的構造析構基本沒需求.從Delphhi2005還是2006開始才支持Class var的.記得不太清楚了

第二個原因.Delphi的Unit有初始化節和反初始化節(initialization/finalization).很多初始化工作都可以在這里面做.比如說類的靜態變量.所以對類的構造函數需求不是很大.

隨手試了一下Delphi2010.驚喜的發現不知道什么時候Delphi2010已經開始支持類的構造和析構函數了.易博龍和CodeGear居然在介紹Delphi2010的新變化的同時都沒有介紹這個特征.

貼一段代碼:

typeTTest = classprivateclass var StaticABC : Integer;  //類變量(類似C++的靜態變量.但不完全等同)varFABC : Integer; //普通成員變量publicclass constructor Create();//類的構造函數class destructor Destroy; //類的析構函數constructor Create();   //實例的構造函數destructor Destroy; override; //實例的析構函數end;{ TTest }class constructor TTest.Create;
beginStaticABC := 1234;
end;class destructor TTest.Destroy;
beginend;constructor TTest.Create;
beginFABC := StaticABC;
end;destructor TTest.Destroy;
begininherited Destroy;
end;

呵呵.很有意思.雖然以前用Unit的initialization/finalization可以實現.但是如果有了類的構造和析構語法的話代碼的可讀性會更好.

同時還發現結構體(Record)也可以用一樣的語法.可編譯通過,但是實際上卻沒有效果.估計以后會加上這個功能吧

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542378.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542378.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542378.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sed 替換_sed命令批量替換文件內容

“ 開發人員有時會大批量替換文件內容,sed命令是一個很好用的工具。”01—暴力替換方式近期有個臨時任務,將系統中所有"帳"替換為"賬",那"帳"和"賬"有啥區別呢;1、賬的部首是貝;帳的部首是巾。2、賬是關于貨幣、…

android 模仿uc標簽頁,模仿UCweb菜單 - 白羽雕弓 - 博客園

UCWeb的菜單看起來不錯,自己想模仿做一個,苦惱一直沒有思路google了幾天,終于找到一個帖子 http://www.eoeandroid.com/viewthread.php?tid28824按照上面提供的思路實現了1、保留menu按鍵作用2、用popupwindow作為菜單顯示容器3、用GridVie…

ipv6路由協議配置_IPV6尋址,標頭和路由協議

ipv6路由協議配置The IPV6 address is 128 bits. Whereas IPV4 is represented by 4 groups of decimal numbers, same IPV6 is represented by 8 groups of hexadecimal numbers. The example of IPV6 address is 2001:0db8:85a3:0000:0000:8a2e:0370:7334. IPV6地址是128位。…

rpc框架

Motan,dubbo轉載于:https://www.cnblogs.com/zhangshiwen/p/5980886.html

android webview 監聽js,Android webview與js的數據交互

項目要用到Webview和js交互,查了查以前的項目感覺還是有必要整理下的。簡單描述下項目中用到的地方,比如說在web頁需要用到登錄的地方點擊登錄跳轉到APP原生登錄界面去登錄,點擊web頁的撥打電話彈出原生dialog詢問是否撥打,點擊we…

c ++查找字符串_C ++異常處理| 查找輸出程序| 套裝1

c 查找字符串Program 1: 程序1&#xff1a; #include <iostream>using namespace std;int main(){try {int num1 10;int num2 0;int res 0;res num1 / num2;}catch (exception e) {cout << "Exception: Divide By Zero" << endl;}return 0;}O…

python的repr和str有什么不同_str()和repr()的異同

str()函數和repr()函數&#xff0c;都是Python內置的標準函數。這兩個函數都是根據參數對象返回一個字符串&#xff0c;但是又有一些不一樣的地方。我們在使用的時候&#xff0c;常常搞混&#xff0c;傾向于使用簡單明了的str()函數&#xff0c;而搞不清楚為什么還有一個不知所…

android web通訊錄,Android手機開發之通訊錄

Android手機開發——通訊錄實現增加、查詢、修改、刪除的功能&#xff0c;輸入聯系人信息&#xff0c;點擊“添加”按鈕&#xff0c;可以添加聯系人信息到數據庫&#xff1b;點擊“查詢”按鈕&#xff0c;會發現添加的聯系人信息顯示在界面中&#xff1b;重新輸入聯系人電話&am…

有關UITableView--cell復用問題

近來用Tableview做了一個九宮格。過程中碰到了兩個cell復用問題。 問題一&#xff1a; 在cell中為button添加addTarget點擊事件時&#xff0c;出現后面的cell會重疊它前面cell的事件。代碼如下&#xff1a; C代碼 static NSString *CellWithIdentifier "DiscoverHomeTab…

python客戶端和服務端實驗_結合服務器和客戶端python

我正在嘗試使用python(稍后可能用c語言)和TCP套接字制作一個本地網絡聊天程序。我的目的是讓服務器監聽當前計算機的地址以獲取傳入消息&#xff0c;并將這些消息轉發給客戶端(我現在還不確定)。客戶端將是一個簡單的gui&#xff0c;可以通過本地連接向活動服務器發送消息。實際…

python常用語法和示例_C語言切換案例教程,語法,示例和規則

python常用語法和示例使用默認情況下的決策 (Decision making using switch-case-default) Many times in our daily lives, we face conditions where we are required to choose between a number of alternatives rather than just two or three. For example, which school…

android so abi適配,Android NDK學習(六): so文件兼容之abiFilters的使用

最近項目中遇到了要使用JavaCV的情況&#xff0c;涉及到了abi兼容的選擇。因為如果全部都適配的話&#xff0c;包很大&#xff0c;這樣兼容那些用戶數極少的cpu就很不劃算&#xff0c;所以我只適配了armeabi-v7a這一個。但是今天在x64-v8a的模擬器上看的時候&#xff0c;提示我…

python中doc=parased.getroot()_python中執行sed命令操作源文件時出現錯誤

我想在python中執行一個sed命令&#xff0c;第一種方法直接指定文件時&#xff0c;可以正確輸出結果&#xff0c;但是第二種我打開文件操作的時候就有問題&#xff0c;不知道什么原因&#xff0c;求高手解答&#xff1f;(1)>>> sedcmd"sed -n \s/{//g; p\ /qye/p…

JavaScript基礎之Number對象和Math對象

2019獨角獸企業重金招聘Python工程師標準>>> //Math對象//屬性float Math.E; //返回自然對數的底數e&#xff0c;約2.718float Math.LN2; //返回2的自然對數&#xff0c;約0.693float Math.LN10; //返回10的自然對數&#xff0c;約2.302fl…

c++ stl 獲取最小值_如何在C ++ STL中找到向量的最小/最小元素?

c stl 獲取最小值Given a vector and we have to minimum/smallest element using C STL program. 給定一個向量&#xff0c;我們必須使用C STL程序最小/最小元素。 尋找向量的最小元素 (Finding smallest element of a vector) To find a smallest or minimum element of a …

android studio panic,Android Studio模擬器PANIC錯誤

Android Studio模擬器突然停止工作.當我嘗試運行虛擬設備時,我在事件日志中收到以下錯誤.模擬器:PANIC:找不到AVD系統路徑.請定義ANDROID_SDK_ROOT仿真器:處理完成,退出代碼為1所以我檢查了ANDROID_SDK_ROOT環境變量設置的值,它是空的.所以我把它設置為/Users/{username}/Libra…

linux特殊權限之訪問權限

特殊權限如/etc/passwd:sSuid:普通用戶以管理員身份運行命令&#xff08;chmod us FILE、chmod u-s FILE&#xff09;如果FILE本身原來就有執行權限&#xff0c;SUID顯示為s&#xff1b;否則顯示SSgid:基本組以管理組身份運行命令&#xff08;chmod gs FILE、chmod g-s FILE&am…

vb.net變量值變化觸發事件_Angular變化檢測的理解

獲取臟檢查的時機Angular 使用NgZone獲取變化的通知&#xff0c;然后進行全面的變化檢測&#xff0c;進而更新Dom臟檢查的過程Angular的數據流是自頂而下&#xff0c;從父組件到子組件單項流動&#xff0c;單項數據流保證了高效可預測的變化檢測。盡管檢查了父組件之后&#xf…

python 算術右移_Python算術序列| 競爭編碼問題

python 算術右移Question: 題&#xff1a; In mathematics, when in an arithmetic sequence is a sequence of numbers such that the difference between the consecutive terms is constant then it is called arithmetic constant. 在數學中&#xff0c;當在算術序列中是…

Android8內測申請,小米 6 安卓 8.0 來了 內測開始招募

Android 8.0 已經正式發布多時&#xff0c;目前不少廠商已經啟動了旗下進行的 Android 8.0 適配計劃。但令人納悶的是&#xff0c;一向對系統升級比較熱心的小米卻遲遲沒有動靜。好消息是&#xff0c;此前網友曝光的消息顯示&#xff0c;MIUI 已經悄然在官方論壇中招募小米 6 的…