[问题] 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