[問題] 99台聯大第29題

作者: longlongint (華哥爾)   2011-06-30 21:47:52
題目
補充:這題考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 其實也可以做啊...
個人小抱怨 出題的人只為出題而出題 不像是有實際在寫程式的人
作者: LikeCherry (櫻桃)   2011-06-30 23:48:00
這一題如果是考試中看見 我應該會直接跳過吧...一方面是真的很難看懂他要我寫的答案是什麼……不過我願意加碼個500P幣求這題詳解 純粹求知^^"
作者: longlongint (華哥爾)   2011-06-30 23:50:00
個人覺得 出題者故意刁難因為Cell mul(Cell a, Cell b) 也能達到相同效果而且更好寫個人覺得這題出成傳入兩個物件陣列 連續處理完回傳陣列會比較好 要不然實際寫程式不會搞得像這題一樣XD啊~講錯 Cell&不能傳陣列

Links booklink

Contact Us: admin [ a t ] ucptt.com