原创 程序Locale與字符集通透講解

轉載原文地址 https://www.cnblogs.com/dolphi/p/3622439.html  ,本文對轉載文章做個排版。 locale是國際化與本土化過程中的一個非常重要的概念,個人認爲,對於中文用戶來說,通常會涉及到的國

原创 C++聲明數組模板

template<typename T, size_t N> struct StructArr { }; // 使用形式: StructArr<int[],2> template<typename T,size_t N> struc

原创 C++ shared_ptr

允許多個shared_ptr對象通過引用計數器管理同一塊堆內存。 堆內存釋放條件:     引用計數器爲0時,在shared_ptr析構函數中釋放堆內存     調用成員函數operator=或者reset被其他指針替代時 線程安全性:

原创 C++11 constexpr

使用constexpr關鍵字的變量和函數要求程序在編譯期間就知道變量的實際數值和函數的實際返回值並且是而不是在程序運行期間才知道實際數值。而且constexpr語句當中涉及的變量都是const屬性的。 constexpr比const要求更

原创 C++ 非const成員函數調用const成員函數的重載版本

 在C++中void func() const 和void func()可以形成重載函數,如果void func() const和void func()寫同樣的代碼實現func功能,這樣就造成了代碼浪費(重複寫代碼)。這種問題的解決方式就

原创 C++全局operator重載替換友元operator

class Data { public: explicit Data(int val):m_val(val) { } const int getVal() const { ret

原创 C++模板的幾種寫法

常規: tempate<class T> struct SName1 { // statement }; template<typename T> struct SName2 { // statement }; // 函數模板 te

原创 c++ vector造成的內存泄漏

C++中的std::list, std::array, std::queue, std::map, std::set, std::vector, std::forward_list, std::multiset, std::multima

原创 QML Qt.binding

Qt.bindding的執行由QML引擎監控,一旦滿足綁定條件就會響應。 第一種:爲屬性綁定一段代碼 Rectangle{ implicitWidth: 300; implicitHeight: 200;

原创 Qt C++加載qml的兩種方式

一:qml的根節點是Item的可見派生類 #include <QGuiApplication> #include <QQuickView> int main(int argc, char** argv) { QGuiAppli

原创 c++11 lambda表達式

lambda形式: [capture list](param list)->return_type { body } capture list: 捕獲列表,只能是當前lambda表達式所在函數體的局部變量名,直接在body

原创 std::move,std::forward;std::remove_reference

/*  * 引用摺疊  * A& & 摺疊成 A&  * A& && 摺疊成 A&  * A&& & 摺疊成 A&  * A&& && 摺疊成 A&&  */ template<class _Ty> struct remove_refe

原创 C++間接釋放內存造成野指針解決方法

// 考慮這種情況:通過指針賦值釋放掉內存,再去解引用原始指針會怎麼樣 int main() { int* ptr = new int(1); int* pint = ptr; delete pint; pint

原创 設計模式9-裝飾器模式-C++

裝飾器模式:動態的給一個對象增加類中沒有提供的方法。 裝飾器模式隻影響當前實例對象,對其他同類型的實例沒有影響。

原创 sizeof全面解析

sizeof: 計算變量或者類型的內存佔用字節數。 sizeof(指針)在32位系統=4;在64位系統=8. void func(int arr[100]) { cout<<"sizeof func arg arr:"<<size