動態

@manxisuo

寫一個只觸發一次槽函數的Qt connect函數

在之前的Qt項目中,我發現經常會用到槽函數只需要執行一次的情況。也就是説,槽函數執行一次後,就需要disconnect對應的連接。然而,真正操作起來實際上挺麻煩的,或者説不優雅。因為你需要把之前connect時產生的QMetaObject::Connection對象保存起來,而保存它不能用局部變量,通常需要保存到類的成員變量中,或者其他生命週期足夠長的地方,以防止在disconnect它的時候,它

manxisuo 頭像

@manxisuo

昵稱 manxisuo

@simple_coder

C++11 unique_lock lock_guard

unique_lock獨佔的是mutex對象,就是對mutex鎖的獨佔。用法如下: (1)新建一個unique_lock 對象 (2)給對象傳入一個std::mutex 對象作為參數; std::mutex mymutex; unique_lock lock(mymutex); 加鎖時新建一個對象lock,而這個對象生命週期結束後自動解鎖。在函數內部創建一個鎖,函數結束即自動釋放

simple_coder 頭像

@simple_coder

昵稱 Simple

@caisekongbai

提升面試成功率:深入理解 C++ 11 新特性

C++11是C++語言的一個重大更新,引入了許多新特性,包括自動類型推導、lambda表達式、右值引用、智能指針等等。這些新特性使得C++更加現代化、高效、易用。也是面試容很容易被問到一個問題,下面我將簡要介紹一些C++11的新特性 自動類型推導 C++11引入了auto關鍵字,可以讓編譯器自動推導變量的類型。這樣可以減少代碼中的重複代碼,提高代碼的可讀性和可維護性。例如: auto i = 42

caisekongbai 頭像

@caisekongbai

昵稱 小萬哥

@wunima

學懂現代C++——《Effective Modern C++》之類型推導和auto

前言 之前分享過Scott Meyers的兩本書《Effective C++》和《More Effective C++》。這兩本書對我深入學習C++有着很大的幫助,建議所有想進階C++技術的同學都可以看看。但是,這兩本書是大神Scott在C++11之前出的,而C++11對於C++社區來説是一次重大的變革,被稱為現代C++,用以區分C++11之前的傳統C++。 好在Scott在之後也帶來了全新的《E

wunima 頭像

@wunima

昵稱 吳尼瑪

@masutaadashi

C語言內存泄漏的常見情況及解決方案

內存泄漏(Memory Leak)是指程序在申請內存後,無法釋放已申請的內存空間,一次小的內存泄漏可能沒什麼影響,但長期或頻繁發生會佔用大量內存,影響系統性能甚至引發系統崩潰,造成系統資源的浪費。 內存泄漏存在於諸多編程語言中,是一種普遍的常見的問題。 以C和C++為代表的允許程序員直接管理內存的語言。內存泄漏的常見原因是程序員顯式地分配了內存,但忘記釋放不再需要的內存。 以Java、Pyt

masutaadashi 頭像

@masutaadashi

昵稱 Masutaa大師

@yuelianggeimengnalisha

智能指針

1、RAII 利用對象生命週期來控制程序資源。在對象構造時獲取資源,在對象析構時釋放資源。 2、智能指針的原理 RAII特性、像指針一樣去使用。 Toperator*() { return *_ptr; } T*operator-() { return _ptr; } 3、問題 多個智能指針指向同一塊空間,這塊空間會被析構多次。也就是智能指針拷貝有問題。 4、unique_ptr

yuelianggeimengnalisha 頭像

@yuelianggeimengnalisha

昵稱 月亮給蒙娜麗莎

@zhoutk

簡單、穩定、概念前衞且易看懂的JSON庫——QJSON

QJSON 介紹 QJSON 是 ZJSON的替代庫。 ZJSON已經開發出來有一段時間了,也進行了一些應用,效果還不錯,但現在存在些問題。 字符串解析為json對象時,當初借鑑於json11,一直沒時間去換成狀態機模式 沒有進行大規模數據驗證 大量使用遞歸算法,沒時間組織測試 C++要求至少為 C++17 版本 因此花了一個國慶假期,封裝QT5:Core中的相關Json庫,保持

zhoutk 頭像

@zhoutk

昵稱 zhoutk

@shimiandehoutao

單例模式+線程安全

概念 程序的生命週期內只有一個實例的存在 場景 日誌記錄器、數據庫連接池、線程池等 實現 #include iostream #include mutex #include boost/noncopyable.hpp using namespace std; // 版本一 // 創建即初始化-eager initiali

shimiandehoutao 頭像

@shimiandehoutao

昵稱 kkkK2008

@liu_chen

c++的時間管理:chrono庫

貼一個解釋得相對詳細的帖子 https://renyili.org/post/std_chrono/ chrono裏面用到了比較多的庫裏自定義的概念,我寫一下學習筆記如下。 庫裏定義了三種時間相關的模板類 1. time_point 第一種表示使用某個計時時鐘類型來記錄的時間點 templateclass Clock, class Duration = typename Clock::durati

liu_chen 頭像

@liu_chen

昵稱 路名一

@dhero

lambda表達式

C++ 中的 Lambda 表達式是一種簡潔的語法結構,允許在代碼中直接定義和使用匿名函數。Lambda 表達式增強了代碼的靈活性和可讀性,特別是在處理算法、函數對象、事件處理、回調函數等場景下尤為有用。其一般格式如下: [capture_list](parameter_list) - return_type { function_body } 各部分詳細説明: 捕獲列表(Capture

dhero 頭像

@dhero

昵稱 dherorunner

@ishare

深入解析C++的auto自動類型推導

關鍵字auto在C++98中的語義是定義一個自動生命週期的變量,但因為定義的變量默認就是自動變量,因此這個關鍵字幾乎沒有人使用。於是C++標準委員會在C++11標準中改變了auto關鍵字的語義,使它變成一個類型佔位符,允許在定義變量時不必明確寫出確切的類型,讓編譯器在編譯期間根據初始值自動推導出它的類型。這篇文章我們來解析auto自動類型推導的推導規則,以及使用auto有哪些優點,還有羅列出自C+

ishare 頭像

@ishare

昵稱 愛分享

@wodekouwei

Android C++系列:Linux信號(二)

PCB的信號集 如果在進程解除對某信號的阻塞之前這種信號產生過多次,將如何處理?POSIX.1允 許系統遞送該信號一次或多次。Linux是這樣實現的:常規信號在遞達之前產生多次只 計一次,而實時信號在遞達之前產生多次可以依次放在一個隊列裏。本文不討論實時信 號。每個信號只有一個bit的未決標誌,非0即1,不記錄該信號產生了多少 次,阻塞標誌也是這樣表示的。因此,未決和阻塞標誌可以用相同的數據類型s

wodekouwei 頭像

@wodekouwei

昵稱 輕口味

@user_ze46ouik

這可能是思否講「原型鏈」,講的最好最通俗易懂的了,附練習題!

前言 大家好,我是林三心,相信大家都聽過前端的三座大山:閉包,原型鏈,作用域,這三個其實都只是算基礎。而我一直覺得基礎是進階的前提,所以不能因為是基礎就忽視他們。今天我就以我的方式講講原型鏈吧,希望大家能牢固地掌握原型鏈知識 很多文章一上來就扔這個圖,但是我不喜歡這樣,我覺得這樣對基礎不好的同學很不好,我喜歡帶領大家去從零實現這個圖,在實現的過程中,不斷地掌握原型鏈的所有知識!!!來吧!!!跟着我

user_ze46ouik 頭像

@user_ze46ouik

昵稱 Sunshine_Lin

@bianchengsanmei

再解 JavaScript 原型與原型鏈

前言 JavaScript 原型與原型鏈雖然是一個老生常談的話題,但依然困惑着很多人,今天我再來從另一個角度談談這個問題。 兩個疑問 先看這樣一段代碼: let obj = {} obj.__proto__.haha = 'gogo' console.log(obj.haha) // "gogo" 運行一下上面的代碼,輸出結果為 gogo。 針對這個結果,有以下疑問: obj 哪來的 __p

bianchengsanmei 頭像

@bianchengsanmei

昵稱 編程三昧

@crmeb

一文徹底搞懂原型鏈

前言 原型和繼承是js中非常重要的兩大概念。深入瞭解原型,也是學好繼承的前提。 先來看一下構造函數、實例、原型對象之間的關係 「實例與原型對象之間有直接的聯繫,但實例與構造函數之間沒有。」 兩個概念 js分為「函數對象」和「普通對象」,每個對象都有__proto__屬性,但是隻有函數對象且「非箭頭函數」才有prototype屬性。 屬性__proto__是一個對象【實例通過__pro

crmeb 頭像

@crmeb

昵稱 CRMEB

@snowwolfarden

Function instanceof Object和Object instanceof Function都true

1、需求 在看原型鏈。沒想明白Function和Object的關係。就查了下。 2、原則 js之父在設計js原型、原型鏈的時候遵從以下兩個準則: 準則1:原型對象(即Person.prototype)的constructor指向構造函數本身 準則2:實例(即person)的__proto__和原型對象指向同一個地方 3、關係 null- Object.prototype - Functio

snowwolfarden 頭像

@snowwolfarden

昵稱 SnowWolfArden

@wojiaocuisite

萬物皆空之 JavaScript 原型

ES6帶來了太多的語法糖,其中箭頭函數掩蓋了 this 的神妙,而 class 也掩蓋了本文要長篇談論的 原型。 最近,我重寫了這篇文章,通過本文,你將可以學到: 1. 如何用 ES5 模擬類; 2. 理解 prototype 和 __proto__; 3. 理解原型鏈和原型繼承; 4. 更深入地瞭解 JavaScript 這門語言。 引入:普通對象與函數對象 在 JavaScript 中,一直

wojiaocuisite 頭像

@wojiaocuisite

昵稱 我叫崔斯特

@qinglong_62898aa51988d

聊聊原型鏈與繼承

前言 原型鏈與繼承、作用域與閉包、單線程與異步並稱為前端的三座大山,均屬於 JavaScript 中基礎卻又十分複雜的部分,而且面試中也經常問到。 今天,我們就來詳細介紹一下原型鏈與繼承,聊聊它的概念、作用與用法。 如果掘友對此部分已經學過只是略微遺忘,可直接跳轉至原型鏈圖片看圖複習。 下面,讓我們循序漸進的介紹下原型鏈與繼承。 認識原型 在我們創建函數的同時,都會自動為其創建一個 prototy

@54r9rxzy

JavaScript中原型與原型鏈

構造對象 function Person() {} let person = new Person() 上面程序建立了一個Person類型的實例 原型 function Person() {} Person.prototype.name = "ztq" Person.prototype.sayHi = function () {console.log("hello world")} l

54r9rxzy 頭像

@54r9rxzy

昵稱 Tqing

@snowwolfarden

Day 92/100 原型鏈的繼承屬性

1、JS中的繼承 當談到繼承時,JavaScript 只有一種結構:對象。每個實例對象(object)都有一個私有屬性(稱之為 proto )指向它的構造函數的原型對象(prototype)。 該原型對象也有一個自己的原型對象(__proto__),層層向上直到一個對象的原型對象為 null。根據定義,null 沒有原型,並作為這個原型鏈中的最後一個環節。 2、繼承屬性 JavaScript

snowwolfarden 頭像

@snowwolfarden

昵稱 SnowWolfArden

@anchen_5c17815319fb5

如何理解JS原型和原型鏈

每個函數(箭頭函數除外)都有prototype屬性,該屬性指向原型。 每個對象(null除外)都有__proto__屬性,指向了創建了該對象的構造函數的原型。(注:函數也是對象) 對象可以通過__proto__來尋找不屬於該對象的屬性,__proto__將對象連接起來組成了原型鏈。 理解原型和原型鏈,下面這張圖很重要: 根據上面這張圖,能夠得到如下等式: // 一、對象的__p

@banana_god

JavaScript的原型鏈詳解

最近在項目中經常遇到,且與同事經常探討關於js原型鏈的知識。發現其實很多工作經驗好多年的同事也記不太清楚原型鏈的整個環節,今天在這裏專門的把鏈圖畫出來,並且加以講解,希望能夠幫到更多前端的朋友。 原型鏈其實就是一個三角關係,如下圖所示,我們編寫了一個構造函數Student,通過構造函數創建了對象s1(const s1 = new Student()),也就是我們經常説的s1是構造函數Student

banana_god 頭像

@banana_god

昵稱 _香蕉大神

@gkymfrg1

查找對象屬性的四種方法

1.Object.keys(..)會返回一個數組,包含所有可枚舉屬性( enumerable: true) 2.Object.getOwnPropertyNames(...)會返回一個數組,包含所有屬性,無論它們是否可枚舉 注:Object.keys(..)和Object.getOwnPropertyNames(..)都只會查找對象直接包含的屬性。 3.in操作符會檢查屬性是否在

gkymfrg1 頭像

@gkymfrg1

昵稱 ohoherror

@hard_heart_603dd717240e2

Vue與VueComponent的關係

結論:VueComponent.prototype.__proto__ === Vue.prototype Vue與VueComponent的關係如圖所示: (圖一) 前提知識: 每個函數function都有一個prototype屬性,即顯式原型(屬性),它默認指向Object空對象, 每個實例對象都有一個__proto__屬性,即稱隱式原型(屬性)。 關係圖分析:

hard_heart_603dd717240e2 頭像

@hard_heart_603dd717240e2

昵稱 Hard heart