作者longlongint (华哥尔)
看板TransCSI
标题[问题] 99台联大29题
时间Thu Jun 30 21:47:52 2011
题目
补充:这题考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)
1F:推 LikeCherry:这一题如果是考试中看见 我应该会直接跳过吧... 06/30 23:48
2F:→ LikeCherry:一方面是真的很难看懂他要我写的答案是什麽…… 06/30 23:48
3F:→ LikeCherry:不过我愿意加码个500P币求这题详解 纯粹求知^^" 06/30 23:49
4F:→ longlongint:个人觉得 出题者故意刁难 06/30 23:50
5F:→ longlongint:因为Cell mul(Cell a, Cell b) 也能达到相同效果 06/30 23:50
6F:→ longlongint:而且更好写 06/30 23:50
7F:→ longlongint:个人觉得这题出成传入两个物件阵列 连续处理完回传阵 06/30 23:54
8F:→ longlongint:列会比较好 要不然实际写程式不会搞得像这题一样XD 06/30 23:54
9F:→ longlongint:啊~讲错 Cell&不能传阵列 07/01 00:01
※ 编辑: longlongint 来自: 114.44.214.123 (07/01 14:28)