原创 Ubuntu18.04下編譯mono-unity-2019.2-mbe

準備 環境:Ubuntu 18.04.4 LTS Mono版本:mono-unity-2019.2-mbe 技巧:如果github速度慢,可以先拉到gitee上,之後到gitee上clone 注意:解壓之後檢查mono/external

原创 使用dynamic_cast強制將基類指針轉換成子類指針

在繼承關係中,如果需要增加新的接口,又不想在父類中添加虛函數,這時可以在子類中增加新的接口,當使用父類指針訪問這個函數的時候,需要用dynamic_cast進行類型強轉,因爲父類中本身並沒有這個函數,所以要實現最終的調用,就需要對指針的實

原创 C++簡單實現string類

面試經常會考到的類型,主要考的是幾個構造函數和重載運算符,簡單的實現一下 class CString { public: CString(); ~CString(); int Length()const{return m_len;}

原创 C++深淺複製構造函數

1、淺層複製構造函數(利用默認的複製構造函數) 如果對象A的數據成員中有指針,那麼當我們把對象A複製給對象B的時候,此時對象A和對象B中的指針數據成員都是指向同一塊內存區域的,當兩個對象中的任意一個對象被刪除的時候,指針數據成員的那塊內存

原创 C++函數指針、函數指針數組

1、函數指針 數組名是指向第一個數組元素常量指針;同理,函數名也是指向函數的第一條指令的常量指針 int (*p)(int);//聲明一個指針p,它指向一個函數,這個函數帶有一個int型參數,並且返回值爲int型 int fun(int

原创 C++多重繼承、純虛函數和抽象類

重載繼承的初始化 1)如果類A和類B都同時繼承自類X,類C繼承自A和B,那麼在創建類C的時候,類X的構造和析構函數 會被執行兩次,因爲類C在創建的時候,分別會去創建類A和類B,而類A和類B又會去創建類X,所以 就類X會被創建兩次 2)如果

原创 C++指針

1、什麼是指針:  指針就是用來保存內存地址的變量。 2、指針的地址和指針保存的地址 指針的地址是指針本身在內存中的位置,該地址中可以保存另一個變量的地址,即指針保存的地址。 int main() { int a = 100; in

原创 C++模板函數 模板類

1、函數模板 關鍵字template表明聲明瞭一個模板,後面尖括號中的class是參數類型,也可以寫成template<typename T>,typename和class具有相同功能 template<class T> T Func(

原创 C++類的繼承和虛基類

1、繼承類之間的賦值 繼承類之間的賦值,是指基類的對象賦值給子類的對象,或者子類賦值給基類的操作。一般情況下,只能是子類的對象賦值給基類對象 class Father { public: Father(){a = 100;} ~Fat

原创 C++友元類、友元函數

友元類、友元函數 可以將一個類設爲另一個類的友元類,比如類A設爲類B的友元類;這時類A的成員函數可以訪問類B所有的數據成員,包括私有部分,但是反過來則不行,因爲類B並不是類A的友元類;友元函數和友元類的實現方式一樣 友元函數或者友元類的聲

原创 VisualStudio項目中添加控制檯輸出窗口

項目->屬性->生成事件->後生成事件->命令行:editbin /subsystem:console $(OutDir)$(ProjectName).exe

原创 C++使用構造函數進行類型轉換

可以把數字或者字符串當做對象賦值給另一個對象,這樣在對該賦值表達式進行計算時,首先要對數字或字符串進行類型轉換,同時判斷該類的構造函數的參數是否類型匹配,假如匹配,則調用該類的構造函數創建一個臨時對象,接着將該臨時對象賦值給操作符左邊的對

原创 C++虛函數

1、指向子對象的父類指針 這個例子遇到的問題,用虛函數就可以解決 class Father { public: ~Father(){cout<<"Father析構"<<endl;} void drive(){cout<<"爸爸會開車

原创 C++常量和引用數據成員的初始化

引用也屬於常量,所以和常量一樣,只能對其進行初始化,而不是賦值操作 class MyClass { public: MyClass(int &i)://構造函數初始化列表中是初始化工作 a(1), b(i) { //在這裏做