原创 第二十四節 C++ this關鍵字

/* Human.h */ #include <string> /* * this指當前對象的地址 */ class Human { private: char* name; public: Human(const

原创 第二十八節 C++ 繼承之基礎

#include <iostream> using namespace std; /*類的繼承: 派生類,可根據訪問限定符(public,private,protected)訪問基類的屬性和方法 * 使用繼承的方式,可以抽象多個對象公共

原创 第二十六節 class 與 struct的默認權限區別

/* class和struct最大的區別:默認權限不同 * class:成員的默認權限是private * struct:成員默認權限爲public, 繼承也默認爲public繼承 */ class Human { char* na

原创 第三十五節 C++ 抽象基類和純虛函數

#include <iostream> using namespace std; /* 抽象基類:不能被實例化的基類。 它僅僅只有一個用途,用來派生出其他類。 * 1. 要定義抽象基類,可使用純虛函數,純虛函數可當做接口使用 * 2

原创 第二十一節 C++ - 複製構造函數(淺複製,深複製)

例子1: 不帶指針成員的類,此例子,爲了看是否產生臨時對象(淺複製,按值傳遞)#include <string> /*此類中沒有指針成員*/ class Human { private: std::string name; /*pu

原创 第二十節 C++- 析構函數的使用及調用

析構函數是類的一種特殊函數,只有在對象被銷燬時才被調用,在析構函數內,可以對堆內存進行釋放,如new(構造函數),delete(析構函數)。構造函數可

原创 第三十三節 C++ 繼承之對象的構造順序與析構順序

#include <iostream> using namespace std; /*對象的構造順序: * 1:沒有繼承關係時: 先屬性後構造(構造函數) * 2:有繼承關係時: 先基類後子類,先屬性後構造(構造函數) * 3 : 對象

原创 第二十三節 C++ 如何禁止在棧中實例化類

有時需要在堆中創建對象,禁止在棧中去創建,1 可以將析構函數定義爲private成員2 建立static函數成員去delete這個堆空間/* Human.h */ #include <string> /* * 爲了禁止某些類在棧

原创 第二十九節 C++ 繼承之向基類傳遞參數

#include <iostream> using namespace std; /*有時,基類存在重載的構造函數,而搞造函數對類的數據成員進行了初始化, * 這種情況下,在繼承基類時,需要對基類的數據成員進行初始化 * */ cla

原创 第二十七節 C++ 友元類與友元函數

/* Human.h */ #include <string> /* class定義的private數據成員和方法,不能被外部訪問,但可以被友元函數和友元類訪問 * 友元函數:在類中使用friend可將函數聲明爲友元函數,友元

原创 第三十節 C++ 繼承之覆蓋基類的成員函數(方法)

#include <iostream> using namespace std; /*在派生類中可以覆蓋基類的方法,(調用派生類對象時,只運行派生類實現的函數,而不運行基類實現的函數) * 只要在派生類中重新命名一個跟基類成員函數一樣的

原创 Source Insight快捷鍵大全

附: Source Insight快捷鍵大全退出程序 : Alt+F4重畫屏幕 : Ctrl+Alt+Space完成語法 : Ctrl+E複製一行 : Ctrl+K恰好複製該位置右邊的該行的字符 : Ctrl+Shift+K複製到剪貼板

原创 第三十四節 C++ 多態原理與虛函數表

多態: 將派生類對象視爲基類對象,執行派生類對象的操作, 可用virtual實現多態。下面代碼存在兩個問題:#include <iostream> using namespace std; /* 這段代碼將存在兩個嚴重問題: * 1.

原创 第三十二節 C++ 繼承之基類的成員函數在派生類中被隱藏

#include <iostream> using namespace std; /*假設基類中函數被重載,當派生類覆蓋基類的成員函數時,會隱藏到基類的其他的重載函數 * 注:應該儘量避免隱藏基類的成員函數 */ class Perso

原创 第二十二節 C++ private,static和構造函數實現單例模式

/* Human.h */ #include <string> /*這裏使用了static關鍵字: * static用於類的數據成員時,該數據成員在所有對象之間共享 * static用於在函數內部聲明局部變量時,該變量的值兩次調用之