三大函數(shù):拷貝賦值、拷貝構(gòu)造、析構(gòu)
- class內(nèi)有指針的情況下不能使用編譯器默認(rèn)的構(gòu)造、賦值、析構(gòu)函數(shù)。特別是拷貝構(gòu)造,拷貝賦值函數(shù)。
- 對于含有指針的拷貝賦值函數(shù),首先要進(jìn)行自我賦值檢測(如果是自我賦值而沒有自我賦值檢測會造成嚴(yán)重的錯誤),其次要將之前的指針指向的內(nèi)容釋放掉,否則會造成內(nèi)存泄漏。
- 在class內(nèi)的成員變量和成員函數(shù)中,如果成員變量前加static修飾符則其在內(nèi)存內(nèi)某一個地方單獨存在,無論創(chuàng)建多少object都只有一份。在成員函數(shù)前加static修飾,則函數(shù)變?yōu)殪o態(tài)成員函數(shù),它不能使用默認(rèn)的this指針,故只能操作靜態(tài)成員變量。對于靜態(tài)成員變量應(yīng)該在class聲明后進(jìn)行初始化操作。 調(diào)用static函數(shù)的方式有兩種:1.通過object調(diào)用2.通過class name調(diào)用。
- class模板以
template <typename T>開頭 - function模板以
template <class T>開頭 - 使用命名空間
namespace std {
...//定義 可以分開寫,不需要一次全部寫完
}
- 轉(zhuǎn)換函數(shù)重載
operator type() const;