[問題] 99台聯大第29題

看板TransCSI作者 (華哥爾)時間13年前 (2011/06/30 21:47), 編輯推噓1(108)
留言9則, 2人參與, 最新討論串1/2 (看更多)
題目 補充:這題考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)

06/30 23:48, , 1F
這一題如果是考試中看見 我應該會直接跳過吧...
06/30 23:48, 1F

06/30 23:48, , 2F
一方面是真的很難看懂他要我寫的答案是什麼……
06/30 23:48, 2F

06/30 23:49, , 3F
不過我願意加碼個500P幣求這題詳解 純粹求知^^"
06/30 23:49, 3F

06/30 23:50, , 4F
個人覺得 出題者故意刁難
06/30 23:50, 4F

06/30 23:50, , 5F
因為Cell mul(Cell a, Cell b) 也能達到相同效果
06/30 23:50, 5F

06/30 23:50, , 6F
而且更好寫
06/30 23:50, 6F

06/30 23:54, , 7F
個人覺得這題出成傳入兩個物件陣列 連續處理完回傳陣
06/30 23:54, 7F

06/30 23:54, , 8F
列會比較好 要不然實際寫程式不會搞得像這題一樣XD
06/30 23:54, 8F

07/01 00:01, , 9F
啊~講錯 Cell&不能傳陣列
07/01 00:01, 9F
※ 編輯: longlongint 來自: 114.44.214.123 (07/01 14:28)
文章代碼(AID): #1E37wBF1 (TransCSI)
文章代碼(AID): #1E37wBF1 (TransCSI)