原创 彙編語言學習02-裸機上執行8086程序

下面的彙編代碼是一個程序加載器,類似於一個最簡易的操作系統,它負責加載另一個用戶程序,需要注意的是,這個這個彙編要位於主扇區。 ;代碼清單8-1 ;文件名:c08_mbr.asm ;

原创 C++異常變量的生命週期,以及可能會遇到的坑

先看如下代碼 class MyException { public: MyException() { cout << "MyException的默認構造" << endl; } MyException(const MyExc

原创 C++重新解釋類型轉換

重新解釋類型轉換是一個函數調用,如下 int a = 10; int * p = reinterpret_cast<int *>(a); reinterpret_cast 就是重新解釋類型轉換,以上代碼很明顯是錯誤的,因爲變量a,從本質

原创 C++動態類型轉換

動態類型轉換是比靜態類型轉換更爲嚴格的一種類型轉換。 如下代碼基本數據類型無法通過動態類型轉換 //基礎類型不可以轉換 char c = 'a'; //dynamic_cast非常嚴格,失去精度 或者不安全都不可以轉換 d

原创 C++通過類模板實現通用類型的數組函數

通用類型的模板數組定義如下 template< class T> class MyArray { public: //構造 explicit MyArray(int capacity) //防止隱式類型轉換 防止MyArray

原创 VMware 搭建 Ubuntu 教程

所需軟件 vmware 鏈接:https://pan.baidu.com/s/1Mktw53V2nb---Pq27ox9bw  提取碼:p3cc  ubuntu.iso 鏈接:https://pan.baidu.com/s/1vgAeY_

原创 C++靜態類型轉換

先看如下代碼 char a = 'a'; double d = a; 很明顯以上代碼無法編譯通過,因爲a 和 d 是不同的數據類型,如果我們確實有需求將a賦值給d,這時應該怎麼做呢? 這就需要用到類型轉換,就是將 a 的數據類型 轉化

原创 編譯器的RVO和NRVO

RVO和NRVO是一個可選值,可以在編譯器上屏蔽掉

原创 cin和while配合使用時,可能出現的死循環

先看如下代碼 void test08() { int num; cout << "請輸入一個1到10的數字:" << endl; while (true) { cin >> num; if (num > 0 && n

原创 C++選擇性的異常拋出,windows 的程序無法限制

先看如下代碼 //可拋出所有類型異常 void TestFunction01(){ throw 10; } int main(){ try{ TestFunction01(); } catch (...){ co

原创 模板類的2種繼承場景

先定義一個模板基類 template <class T> class Base { public: T m_A; //double類型 }; //child繼承與 base必須告訴base中的T的類型,否則T無法分配內存 class

原创 友元函數帶模板參數的類外實現,對其中可能會遇到的問題進行分析

先在類中定義一個友元函數printPerson(),並且參數是一個類模板Person<T1,T2> & p,如下 template<class T1, class T2> class Person { //友元函數類內實現 利用空參

原创 Android NDK 入門學習 C語言03基本數據類型

在C語言裏,基本數據類型有如下 int long float double int 用於保存整數 代碼示例如下 long 也是用於保存整數,代碼示例如下 都是用於保存整數,那麼int 和long之間有什麼區別嗎? 額,在計算機早期的時

原创 C++類外實現函數

先定義一個類,類中定義未實現的函數 template<class T1 ,class T2> class Person { public: Person(T1 name, T2 age); //{ // this->m_Name

原创 This file is not part of the project. Please include it in the appropriate build file

This file is not part of the project. Please include it in the appropriate build file(build.gradle,CMakeLists.txt or An