看板 TransCSI 關於我們 聯絡資訊
題目 補充:這題考C++ class Cell { public: Cell(int v){value = v;} void set(int v){value = v;} int get(){return value;} private: int value; }; 考慮一個C++程式碼,根據以上類別定義 定義函數multiply 傳入兩個物件當參數,回傳一個物件其value值 為兩個參數value值的乘積 函數原型指定為 Cell& multiply(Cell *a, Cell *b) {...} 請定義 {...} 中的內容 我用dev c++ 硬是把碼做出來了 可是總覺得很奇怪,因為用new取得物件的動態記憶體配置時 我只能將他當成長度為1的陣列處理,非常奇怪 能像 int *num = new int;這樣處理嗎? 我的程式碼如下 #include<iostream> using namespace std; class Cell { public: Cell(int v){value = v;} void set(int v){value = v;} int get(){return value;} private: int value; }; Cell& multiply(Cell *a, Cell *b) { int v = ((*a).get()) * ((*b).get()); Cell *ans = new Cell(1); (*ans).set(v); return (*ans); } int main() { Cell a(5),b(7); printf("%d\n",multiply(&a,&b).get()); system("pause"); } 請問有人知道怎麼處理嗎? 如果有人為我解答我會很感謝你!! 順帶一提 我的物件導向是學咖啡 Orz 其實題目也出得挺腦殘的XD 因為 直接回傳Cell型態也能在外面接住資料,然後進行各種操作啊...... 再者,傳入Cell a ,Cell b 其實也可以做啊... 個人小抱怨 出題的人只為出題而出題 不像是有實際在寫程式的人 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.247.229 ※ 編輯: longlongint 來自: 114.37.247.229 (06/30 21:48) ※ 編輯: longlongint 來自: 114.37.247.229 (06/30 22:21) ※ 編輯: longlongint 來自: 114.37.247.229 (06/30 23:47) ※ 編輯: longlongint 來自: 114.37.247.229 (06/30 23:49)
LikeCherry:這一題如果是考試中看見 我應該會直接跳過吧... 06/30 23:48
LikeCherry:一方面是真的很難看懂他要我寫的答案是什麼…… 06/30 23:48
LikeCherry:不過我願意加碼個500P幣求這題詳解 純粹求知^^" 06/30 23:49
longlongint:個人覺得 出題者故意刁難 06/30 23:50
longlongint:因為Cell mul(Cell a, Cell b) 也能達到相同效果 06/30 23:50
longlongint:而且更好寫 06/30 23:50
longlongint:個人覺得這題出成傳入兩個物件陣列 連續處理完回傳陣 06/30 23:54
longlongint:列會比較好 要不然實際寫程式不會搞得像這題一樣XD 06/30 23:54
longlongint:啊~講錯 Cell&不能傳陣列 07/01 00:01
※ 編輯: longlongint 來自: 114.44.214.123 (07/01 14:28)