本筆記為GeekBand C++面向對象高級編程(上)第二周課程之總結。
一、三大函數
從string類入手,講解Class with pointer members中3個特殊函數:
- 拷貝構造函數
- 析構函數
- 拷貝賦值函數
任何帶有pointer members的類必須有拷貝構造函數和拷貝賦值函數。
1.1 拷貝構造函數
copy ctor的實現時必須先分配空間,然后再進行拷貝。
1.2 拷貝賦值函數
必須先檢測自我賦值,然后分三步進行
- 刪除private data
- 分配內存空間
- 拷貝數據
二、堆棧以及內存管理
棧,是存在于某作用域的一塊內存空間。函數本體內聲明的任何變量,其所用內存都取自棧。
堆,是由操作系統提供的一塊全局內存空間,程序可動態分配從中取得若干區塊。

new是先分配內存再調用構造函數
p1.jpg

delete是先調用析構函數再釋放內存
p2.jpg
注意事項:VC中的動態內存分配

VC中動態內存分配
三、類模板
template<typeneme T>
class complex
{
piblic:
...
private:
...
};
四、namespace的使用
可以理解為界定函數、變量的作用域。