请各位C++编程高手帮忙编一个类的大作业,题目是:分数的加减类(这里的分数是分数、整数的分数)

要求:(前提:确保运行正确,请不要从别的网页随便复制粘贴过来,要原创。)【要求比较多,大部分要求符合也可】1.类中要有公有、私有成员。数据成员要有子对象、静态数据成员。成... 要求:(前提:确保运行正确,请不要从别的网页随便复制粘贴过来,要原创。)【要求比较多,大部分要求符合也可】
1.类中要有公有、私有成员。数据成员要有子对象、静态数据成员。成员函数要有至少二个普通成员函数,一个静态成员函数,一个友元函数,一个常成员函数。
2.要有析构函数。
3.构造函数要重载无参、有参、复制构造函数。
4.要实现单继承或多继承。
5.在程序中要对子对象、静态数据成员初始化,要调用普通成员函数、静态成员函数、友元函数、常成员函数。
大大们做好了请发我QQ邮箱871553275,万分感谢!
展开
 我来答
Bk0X
2012-06-12 · TA获得超过9413个赞
知道小有建树答主
回答量:1217
采纳率:60%
帮助的人:658万
展开全部
#include <iostream>
#include <stdlib.h>

class fct
{
int _fz;
int _fm;
// 求2个数的最大公约数
static int _gcd(int v1, int v2){
if(v1 < v2)
std::swap(v1, v2);
while(v2 != 0)
std::swap(v1 %= v2, v2);
return v1;
}
// 最简化分子, 分母
fct& _cut(){
int gcd = _gcd(_fm, _fz);
_fm /= gcd;
_fz /= gcd;
return *this;
}
friend fct operator +(const fct& left, const fct& right);
friend fct operator -(const fct& left, const fct& right);
friend std::ostream& operator <<(std::ostream& os, const fct& f);
public:
fct(): _fz(0), _fm(1){}
fct(int fz, int fm = 1): _fz(fz), _fm(fm){}
};
// 重载<<操作, 输出样式为 (分子/分母)
std::ostream& operator <<(std::ostream& os, const fct& f){
return (os << "(" << f._fz << "/" << f._fm << ")");
}
// 重载2个分数的加法
fct operator +(const fct& left, const fct& right){
return fct(left._fz*right._fm+right._fz*left._fm, left._fm*right._fm)._cut();
}
// 重载2个分数的减法
fct operator -(const fct& left, const fct& right){
return fct(left._fz*right._fm+right._fz*left._fm, left._fm*right._fm)._cut();
}

int main()
{
fct f1(1, 3); // 3分之1
fct f2(2, 5); // 5分之2
fct f3(1, 4); // 4分之1

std::cout << f1 << " + " << f2 << " = " << f1+f2 << std::endl;
std::cout << f2 << " - " << f3 << " = " << f2-f3 << std::endl;

system("pause");
return 0;
}
//=============输出测试VC++2010===========================
(1/3) + (2/5) = (11/15)
(2/5) - (1/4) = (13/20)
请按任意键继续. . .
//=======================================================
追问
额....,刚刚听了别人的建议,似乎对题目要求也有点弄不明白了,这个“初始化”的意义....能加入析构函数么,
追答
分子默认初始话为0, 分母默认为1, 也就是0/1 = 0 , 因为除数不可以是0, 所以分母设为1.

这个类型并不需要析构函数的, 因为全部是内置内型而且没有动态内存分配.
要加的话就加个空的
~ fct () { } // 析构函数什么也不做.

题目中的继承等也是不需要的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笃侠6A
2012-06-12 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3230万
展开全部
什么人出的题目,“分数加减”居然还要“继承或多继承”!
追问
C++大作业的总体题目是“类”,每人题目不同,以上几个要求是总要求。我的题目是“分数加减类”,如果不能用到“继承或多继承”的话就去掉吧,但大部分要求要满足~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
枝彩静0b7
2012-06-24 · TA获得超过361个赞
知道小有建树答主
回答量:2.5万
采纳率:0%
帮助的人:4903万
展开全部
分数的加减类

参考资料: 分数的加减类

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xc谢谢23
2012-06-24 · 超过15用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:35.5万
展开全部
亲,传给你了哟,你看看吧~~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
守纯带们榜4585
2012-06-24 · TA获得超过5.3万个赞
知道大有可为答主
回答量:2.7万
采纳率:0%
帮助的人:1866万
展开全部
已发送~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式