Qt:智能指針QScopedPointer使用

QScopedPointer和C++中的智能指針std::unique_ptr其概念是一樣的,它包裝了new操作符在堆上分配的動態對象,能夠保證動態創建的對象在任何時候都可以被正確地刪除。但它有更嚴格的所有權,并且不能轉讓,一旦獲取了對象的管理權,你就無法再從它那里取回來。也就是說,只要出了作用域,指針就會被自動刪除,因為它的拷貝構造和賦值操作都是私有的,與QObject及其派生類風格相同。

QScopedPointer官方示例

沒有使用智能指針:

void myFunction(bool useSubClass)
{MyClass *p = useSubClass ? new MyClass() : new MySubClass;QIODevice *device = handsOverOwnership();if (m_value > 3) {delete p;delete device;return;}try {process(device);}catch (...) {delete p;delete device;throw;}delete p;delete device;
}

使用智能指針QScopedPointer:

void myFunction(bool useSubClass){// assuming that MyClass has a virtual destructorQScopedPointer<MyClass> p(useSubClass ? new MyClass() : new MySubClass);QScopedPointer<QIODevice> device(handsOverOwnership());if (m_value > 3)return;process(device);}

注意:因為拷貝構造和賦值操作私有的,所以不能用作容器的元素。

初始化

每個變量都需要初始化才能夠正確使用,官方給的示例較復雜,不符合實際現場,現有三種方式初始化,分別示例如下。

直接初始化:

QScopedPointer<Generator> g{new Generator()};

同其它變量初始化步驟,直接使用new關鍵字。

調用reset方法進行初始化:

// 在A處聲明智能指針變量。
QScopedPointer<Generator> auto_generator_;
...
...
...// 在B處重新對變量auto_generator_進行初始化,變量auto_generator_原來持有的指針被delete。
auto_generator_.reset(new Generator{});

該方法用在已經使用過的智能指針。

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

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

相關文章

TensorFlow基礎之理解計算圖

Tensor Flow TensorFlow 本章介紹TensorFlow的基礎。特別地&#xff0c;你將學習如何用TensorFlow進行基礎計算。在開始使用 TensorFlow之前,你必須理解它背后的哲學。 這個庫基于計算圖的概念&#xff0c;如果你不理解計算圖是如何工作的&#xff0c;你就不能理解如何使用這…

【HarmonyOS Next之旅】DevEco Studio使用指南(三十五) -> 配置構建(二)

目錄 1 -> 定制HAP多目標構建產物 1.1 -> 定義產物的HAP包名 1.2 -> 定義產物的deviceType 1.3 -> 定義產物的distributionFilter 1.4 -> 定義產物preloads的分包 1.5 -> 定義產物的source源碼集-pages 1.6 -> 定義產物的source源碼集-sourceRoots…

[muduo] ThreadPool | TcpClient | 異步任務 | 通信測試

第九章&#xff1a;線程池&#xff08;ThreadPool&#xff09; 在第八章《TcpServer》中&#xff0c;我們了解到muduo::net::TcpServer通過EventLoop線程池處理入站連接。 這些EventLoop線程主要負責網絡I/O&#xff1a;套接字讀寫和定時器處理&#xff0c;由Poller和Channel…

【筆記】解決部署國產AI Agent 開源項目 MiniMax-M1時 Hugging Face 模型下載報錯解決方案

MiniMax-AI/MiniMax-M1&#xff1a;MiniMax-M1&#xff0c;世界上第一個開放權重、大規模的混合注意力推理模型。 一、問題背景 【筆記】解決部署國產AI Agent 開源項目 MiniMax-M1時 Hugging Face 模型下載緩存占滿 C 盤問題&#xff1a;更改緩存位置全流程-CSDN博客 在執行hu…

新手如何利用AI助手Cursor生成復雜項目

新手如何利用AI助手Cursor生成復雜項目 在編程學習的道路上&#xff0c;AI工具正成為新手開發者的得力助手。本文將介紹如何借助Cursor這一強大的AI代碼助手&#xff0c;從零開始構建復雜項目。 一、基礎準備工作 作為編程新手&#xff0c;面對復雜項目時常常不知從何下手。利…

【Fargo】x264的intra refresh 3: 采集、編碼到 RTP打包

實際調試默認并么有打開b_intra_refresh D:\XTRANS\thunderbolt\ayame\zhb-bifrost\player-only\echo\codec\x264\echo_h264_encoder.cpp 即使打開了b_intra_refresh,也不影響RTP打包: 但是有一些要注意的地方: RFC 6184(“RTP Payload Format for H.264 Video”) intra …

Vue3 的生命周期:從 Composition API 視角看

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

面向互聯網大廠Java崗位面試:Spring Boot與微服務架構的深入探討

面向互聯網大廠Java崗位面試&#xff1a;Spring Boot與微服務架構的深入探討 問題1&#xff1a;什么是Spring Boot&#xff0c;它如何簡化Spring應用程序的開發&#xff1f; 簡潔回答&#xff1a; Spring Boot是一個基于Spring框架的開源Java平臺&#xff0c;旨在簡化新Sprin…

【信號與系統四】采樣和通信系統

在一定條件之下&#xff0c;一個連續時間信號完全可以用該信號在等時間間隔點上的值或樣本來表示&#xff0c;并且可以用這些樣本值把該信號全部恢復出來。這個稍微有點使人吃驚的性質來自于采樣定理。 例如一幀一幀的電影畫面&#xff0c;在我們大腦中構成連續的生活情節 接…

關于球面投影SphericalProjector的介紹以及代碼開發

球面投影的幾何背景 什么是球面投影&#xff1f; 球面投影將 2D 圖像中的像素點&#xff08;通常是平面&#xff09;映射到一個虛擬的球面上&#xff0c;再將球面上的角度&#xff08;經度、緯度&#xff09;展開到平面圖上。它是廣角圖像拼接、全景圖生成中常用的投影方法。…

wordpress外貿獨立站常用留言表單插件 contact form 7

Contact Form 7 介紹 Contact Form 7 是一款非常流行的 WordPress 聯系表單插件&#xff0c;廣泛應用于外貿獨立站。以下是其主要特點&#xff1a; 功能強大且免費&#xff1a;Contact Form 7 是完全免費的&#xff0c;支持創建和管理多個聯系表單。 簡單易用&#xff1a;用…

佰力博科技與您探討油浴極化的優點及工藝流程

一、油浴極化的優點 溫度范圍寬&#xff1a;油浴極化適用于較寬的溫度范圍&#xff0c;適合不同材料的極化需求。 絕緣強度高&#xff1a;油浴介質具有良好的絕緣性能&#xff0c;能夠承受較高的極化電場。 防潮性好&#xff1a;油浴極化在潮濕環境中仍能保持良好的絕緣性能。 …

從0開始學習R語言--Day28--高維回歸

我們一般處理的數據&#xff0c;都是樣本數量遠大于其特征數量&#xff0c;可用很多種回歸方法&#xff1b;但當特征數量遠大于樣本量時&#xff0c;可能會因為出現無數多個完美解導致過擬合現象&#xff0c;也使得在計算時搜索最有特征子集的方法不再可行&#xff08;因為計算…

響應式數據的判斷:Vue3中的方法

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

[論文閱讀] 人工智能+軟件工程 | 用大語言模型架起軟件需求形式化的橋梁

用大語言模型架起軟件需求形式化的橋梁&#xff1a;一篇ACM調查草案的深度解讀 論文信息 arXiv:2506.14627 ACM Survey Draft on Formalising Software Requirements with Large Language Models Arshad Beg, Diarmuid O’Donoghue, Rosemary Monahan Comments: 22 pages. 6 s…

DM8故障分析工具-AWR報告

在數據庫運維過程中&#xff0c;大家都會利用數據庫提供的各種工具來找到數據庫存在的問題&#xff0c;以便對癥實施配置優化&#xff0c;我是因工作需要&#xff0c;最近開始了解達夢數據庫DM8的故障分析工具&#xff0c;這里發現AWR報告是一款不錯的自帶工具&#xff0c;故而…

《企業司法風險監控系統架構設計:從數據采集到T+1實時預警的完整解決方案》

本文深入探討了天遠大數據在構建企業級司法風險監控平臺和風險報告查詢系統方面的技術實現與業務應用。平臺依托權威、合法的司法數據源&#xff0c;通過實時數據處理與智能分析&#xff0c;為金融、供應鏈、人力資源等領域提供精準、及時的司法預警和決策支持。它通過靈活的多…

使用ccs生成bin

CCS12.6 編譯生成BIN文件正確方法_ccs生成bin文件-CSDN博客

Kafka網絡模塊全鏈路源碼深度剖析與設計哲學解讀

在分布式消息系統的競技場上&#xff0c;Kafka憑借卓越的高性能與高吞吐量脫穎而出&#xff0c;而其網絡模塊正是支撐這一卓越表現的核心引擎。從生產者將消息送入消息隊列&#xff0c;到消費者從中拉取消息&#xff0c;Kafka網絡模塊貫穿消息流轉的每個環節。本文不僅深入Kafk…

華為開發者大會6月20日舉行

華為開發者大會2025&#xff08;HDC 2025&#xff09;將于6月20日至22日在深圳松山湖舉辦。 目前&#xff0c;華為開發者大會2025的詳細日程已經公布&#xff0c;華為終端BG董事長余承東、華為終端BG首席執行官何剛、華為終端BG軟件部總裁龔體等華為高管將出席并發表主題演講&a…