看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Carbontube (碳管)》之銘言: : 我想請問大大,這matrix class實做是要怎樣才會自己free呢? class Matrix { public: Matrix(int m, int n) : my_dim1(m), my_dim2(n), my_data(), my_data(new double[m*n]) { // empty } Matrix(const Matrix& m); // TODO ~Matrix() { delete [] my_data; } double& operator()(int i, int j) { return my_data[i * my_dim2 + j]; } Matrix& operator=(const Matrix& m); // TODO private: int my_dim1, my_dim2; double *my_data; }; 如此一來就完成了一個簡單的 Matrix class ctor 中會進行記憶體配置 dtor 中會釋放記憶體 還可以用 m(i, j) 的方式來存取其中的元素 請記得寫 copy constructor 以及 copy assignment 若你不寫,compiler 會產生一組預設的給你,但它是絕對會產生問題的 最後 在這個板上經常看到即使用 C++ 還是會對 class/struct 做 typedef 的程式碼 請記得 C++ 的 class/struct 名稱就是一個型別 所以不需要再對它們做 typedef 了 C code 才需要這麼做 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.163.145.14
zlw:Visual Studio專案預設值用太多,現在才知道純粹用C得typedef 05/29 15:34
Carbontube:看不懂opy constructor 以及 copy assignment 05/29 17:01
Carbontube:為何用預設的會出問題? QQ 05/29 17:01
Carbontube:還有請問TODO是什麼意思 是須補完備的意思嗎 05/29 17:02
legnaleurc:shallow copy 05/29 17:08
zlw:TODO是用來標記該行有待處理的工作,IDE軟體會搜尋出來,然後 05/29 17:17
zlw:列出一個工作清單,讓你看,其他類似有 FIX、UNDONE 看軟體 05/29 17:20
zlw:查了一下,Visual stdio 沒有 fixme 標記的樣子,還有HACK標記 05/29 17:22