題目
補充:這題考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 其實也可以做啊...
個人小抱怨 出題的人只為出題而出題 不像是有實際在寫程式的人