Vala編成語言教程-構造函數和析構函數

構造函數

????????Vala支持兩種略有不同的構造方案:我們將重點討論Java/C#風格的構造方案,另一種是GObject風格的構造方案。

????????Vala不支持構造函數重載的原因與方法重載不被允許的原因相同,這意味著一個類不能有多個同名構造函數。但這并不構成問題,因為Vala支持命名構造函數。如果您需要提供多個構造函數,可以為它們添加不同的名稱后綴:

public class Button : Object {public Button() {}public Button.with_label(string label) {}public Button.from_stock(string stock_id) {}
}
實例化的方式與之對應:
new Button(); 
new Button.with_label("點擊我"); 
new Button.from_stock(Gtk.STOCK_OK); 

????????你可以通過this()this.``*名稱后綴*()`實現構造函數鏈式調用:

public class Point : Object {public double x;public double y;public Point(double x, double y) {this.x = x;this.y = y;}public Point.rectangular(double x, double y) {this(x, y);}public Point.polar(double radius, double angle) {this.rectangular(radius * Math.cos(angle), radius * Math.sin(angle));}
}void main() {var p1 = new Point.rectangular(5.7, 1.2);var p2 = new Point.polar(5.7, 1.2);
}

析構函數

????????雖然Vala會自動管理內存,但如果您選擇使用指針進行手動內存管理(后續詳述),或需要釋放其他資源時,可能需要自定義析構函數。語法與C#和C++一致:

class Demo : Object {~Demo() {stdout.printf("in destructor");}
}

????????由于Vala的內存管理基于引用計數而非追蹤式垃圾回收,析構函數的執行是確定性的,可用于實現資源管理的RAII模式(關閉流、數據庫連接等)。

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

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

相關文章

本地部署Stable Diffusion生成爆火的AI圖片

直接上代碼 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…

python爬蟲WASM

WASM 一.WASM簡介 1.1 WASM定義 ? WebAssembly(簡稱wasm)是一個虛擬指令集體系架構(virtual ISA),整體架構包括核心的ISA定義、二進制編碼、程序語義的定義與執行,以及面向不同的嵌入環境(如Web)的應用編程接口(WebAssembly API)。是一種運行在現代網絡瀏覽器中的…

Docker鏡像遷移方案

Docker鏡像遷移方案 文章目錄 Docker鏡像遷移方案一&#xff1a;背景二&#xff1a;操作方式三&#xff1a;異常原因參考&#xff1a; 一&#xff1a;背景 比如機器上已經有先有的容器&#xff0c;但是docker pull的時候是失敗的二&#xff1a;操作方式 1、停止正在運行的容器…

關于跨域問題(本地前端訪問服務器端接口跨域出錯)

問題來源&#xff1a; 當服務器封裝了接口但是本地電腦端前端訪問出現跨域問題。 解決方案&#xff1b; 1、使用ipconfig 查看本地電腦的ip地址 ipconfig 2、在后端接口處配置如下代碼 allow_origins["http://本地ip地址:3001", # 局域網內其他設備訪問的本地…

邊緣計算 vs. 云計算,誰才是工業物聯網的未來?

前言 在物聯網&#xff08;IoT&#xff09;飛速發展的今天&#xff0c;邊緣計算正在徹底改變數據的處理、存儲和分析方式。傳統的IoT設備數據通常需要發送到云端進行處理&#xff0c;但隨著設備數量的激增&#xff0c;這種模式在延遲、帶寬和安全性方面暴露出諸多局限。邊緣計…

dell 臺式機 電腦 紐扣電池 如何取下?

dell 臺式機 電腦 紐扣電池 如何取下&#xff1f; 戴爾-optiplex-3060-塔式機-服務手冊

NFC 智能門鎖全棧解決方案:移動端、服務器、Web 管理平臺

目錄 一、系統整體架構 二、移動端 APP 開發 2.1 開發環境與基礎準備 2.2 主要功能模塊 2.3 示例代碼&#xff08;Android/Kotlin 簡化示例&#xff09; 三、后臺服務開發 3.1 環境準備 3.2 主要功能 3.3 示例代碼&#xff08;Node.js Express 簡化示例&#xff09; …

DDR4、DDR5、固態硬盤(SSD)和機械硬盤(HDD)在連續讀/寫、隨機讀/寫性能的對比分析

以下是關于DDR4、DDR5、固態硬盤&#xff08;SSD&#xff09;和機械硬盤&#xff08;HDD&#xff09;在連續讀/寫、隨機讀/寫性能的對比分析&#xff0c;結合技術特性與應用場景的總結&#xff1a; 一、性能對比表格 存儲類型連續讀&#xff08;MB/s&#xff09;連續寫&#x…

【AI】MAC版本本地Stable Diffusion web ui安裝

文章目錄 前言環境依賴homebrewpython3下載stable-diffusion-webui webui模型準備模型網站 中文頁面設置提示詞轉漢語轉英文controlnet安裝controlnet模型下載 結尾 前言 目前&#xff0c;市面上已經出現了很多用Ai 繪圖制作的作品&#xff0c;用于自媒體或者商業等。例如表情…

Linux 云服務器開放端口

首先找到你買服務器的官網&#xff0c;我這里是阿里云 點擊這里的控制臺 這里先點手動添加&#xff0c;再看自己是UDP還是TCP協議&#xff0c;找到對應的協議&#xff0c;目的就填你想開放的端口&#xff0c;源填所有IP/4 0.0.0.0 添加備注點擊保存就開放好了。

[unity 點擊事件] 區域響應點擊事件,排除子節點區域,Raycast Target 應用

當我打開一個二級彈窗后&#xff0c;希望可以通過點擊彈窗以外的區域來關閉該彈窗。一開始我是在彈窗主節點上掛載了一個 button 組件&#xff0c;該 button 注冊的點擊事件中關閉該彈窗。在子節點&#xff08;一個背景圖&#xff09;的image組件上啟用 Raycast Target 選項&am…

表的約束及代碼練習

一.表的約束 查看表&#xff1a;mysql> select * from t_hero; 1.設置t_hero的主鍵為t_id alter table t_hero add primary key(t_id); 2.設置t_hero t_id屬性非空 alter table t_hero modify t_id int not null;3.設置name屬性為非空非重復 alter table t_hero modify…

Linux筆記---動靜態庫(使用篇)

目錄 1. 庫的概念 2. 靜態庫&#xff08;Static Libraries&#xff09; 2.1 靜態庫的制作 2.2 靜態庫的使用 2.2.1 顯式指定庫文件及頭文件路徑 2.2.2 將庫文件安裝到系統目錄 2.2.3 將頭文件安裝到系統目錄 3. 動態庫 3.1 動態庫的制作 3.2 動態庫的使用 3.2.1 顯式…

Java并發編程2(鎖-Sychronized)

目錄 認識Java對象頭 sychronized鎖原理 基本概念 工作原理 1.作用在方法上 2.作用在代碼塊上 工作機制 JVM優化鎖 Monitor鎖 wait/notify park/unpark 線程狀態轉換案例 死鎖 概念 死鎖發生的必要條件 哲學家問題 活鎖 饑餓 概念 饑餓的原因 Reentrant…

現階段高校的人工智能方案培訓如何?

人工智能在未來肯定是核心發展力&#xff0c;核心競爭力&#xff0c;也是國家重點扶持的對象&#xff0c;但我還是不看好高校的人工智能方向&#xff0c;只是怕有些同學對市場前景盲目樂觀&#xff0c;就輕易上車了。 你要是985以上的高校&#xff0c;可以考慮選擇人工智能&…

JavaScript中的繼承有哪些方式?各有什么優缺點

在 JavaScript 中&#xff0c;繼承主要通過原型鏈實現&#xff0c;常見的繼承方式有以下幾種&#xff0c;每種方式都有其優缺點&#xff1a; 1. 原型鏈繼承 1. 實現方式&#xff1a;將子類的原型對象指向父類的實例。 function Parent() {} function Child() {} Child.protot…

深入理解指針(3)(C語言版)

文章目錄 前言 一、字符指針變量二、數組指針變量2.1 數組指針變量是什么2.2 數組指針變量怎么初始化2.2.1 靜態初始化2.2.2 動態初始化 三、二維數組傳參的本質四、函數指針變量4.1 函數指針變量的創建4.2 函數指針變量的使用4.3 typedef關鍵字4.4拓展 五、函數指針數組六、轉…

Linux之 權限提升(Linux Privilege Escalation)

Linux 之權限提升 系統信息 1.獲取操作系統信息 2.檢查PATH&#xff0c;是否有任何可寫的文件夾&#xff1f; 3.檢查環境變量&#xff0c;有任何敏感細節嗎&#xff1f; 4.使用腳本&#xff08;DirtyCow&#xff1f;&#xff09;搜索內核漏洞 5.檢查sudo 版本是否存在漏洞…

【leetcode hot 100 215】數組中的第K個最大元素

解法一&#xff1a;維護最大最小值 -> 堆 -> k個元素的最小值堆 class Solution {public int findKthLargest(int[] nums, int k) {// 維護最大最小值 -> 堆 -> k個元素的最小值堆PriorityQueue<Integer> heap new PriorityQueue<>((n1, n2) -> n…

csp信奧賽C++常用的數學函數詳解

csp信奧賽C常用的數學函數詳解 在信息學奧林匹克競賽&#xff08;信奧賽&#xff09;中&#xff0c;C 的 <cmath> 頭文件提供了豐富的數學函數&#xff0c;用于高效處理數學運算。以下是常用系統數學函數的詳細講解及匯總表格。 絕對值函數 int abs(int x)&#xff1a;返…