// 類和動態記憶體分配
1. 例項原型宣告
class stringbad
;
2.//過載 = 號
stringbad & stringbad::operator=(const stringbad & st)
3.//建構函式
stringbad::stringbad(const
char *s)
4.//例項://注:delete 只能釋放 new
char *str = "woaini";
len = strlen(str);
char *str1 = new
char[len+1];//1.必須加一。
strcpy(str1,str); //2.必須給str1中賦值
delete str1; // 若上述1,2沒有完成 會彈框報錯
3.//複製建構函式函式原型定義
stringbad::stringbad(const stringbad & st)
4.//如果沒有定義複製建構函式會 怎麼樣?
(1) stringbad str = "123";
stringbad str1 = str; **//當 str1 呼叫~stringbad()時會報錯,由於delete**
(2)void callm(const stringbad str); //做函式形參時 會出錯
void callm(const stringbad & str);//定義為引用 時,正常執行
5. //成員初始化列表
//若有這樣的函式
注:text 是 const 資料成員
stringbad::stringbad(int qs)
//應該改為
stringbad::stringbad(int qs):text(qs),len(0)**
//const變數必須這樣初始化,其他變數也可以用列表初始化**
第十二章 動態記憶體
程式除靜態記憶體和棧記憶體,還有自由空間 free store or 堆 heap 使用動態記憶體容易造成記憶體洩漏 忘記delete new分配的空間。share ptr類 模板。最好用make shared函式來分配記憶體。shared ptr p1 make shared shared ptr...
第十二章動態記憶體 allocator類
new和delete的兩部分操作 記憶體分配 釋放 和物件構造 析構 當分配一大塊記憶體時,我們計畫在這塊記憶體上按需構造物件,在此情況下希望記憶體分配和物件構造分離。這表示 我們可以分配大塊記憶體,但是只有真正需要時才執行物件建立操作 同時付出一定開銷 將記憶體分配和物件構造組合在一起可能會導致不...
第十二章 類和物件
類是多個類似事務組成的群體的統稱,能夠幫助我們快速理解和判斷事務的性質面向過程 物件導向 區別 面向過程 事務比較簡單,可以用線性的思維去解決,親力親為 物件導向 事務比較複雜,用簡單的線性思維無法解決 共同點 面向過程和物件導向都是解決實際問題的一種思維方式 總結 物件導向和面向過程相輔相成,二者...