第十三周项目二:分数类中的运算符重载(1)

来源:互联网 发布:淘宝棚拍模特布光技巧 编辑:程序博客网 时间:2024/06/04 18:28

问题及代码:

/*Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作    者:崔青青 *完成日期:2016年5月31日 *版 本 号:v1.0 *问题描述: *输入描述:无 *输出描述:无 */  #include <iostream>using namespace std;class CFraction{private:    int nume;//分子    int deno;//分母public:    //构造函数以及运算符重载函数声明。    CFraction(int n=0,int d=0){nume=n;deno=d;}    CFraction operator+(CFraction &c2);    CFraction operator-(CFraction &c2);    CFraction operator*(CFraction &c2);    CFraction operator/(CFraction &c2);    void display();    };//重载函数的实现以及用于测试的main函数。void CFraction::display(){    cout<<"分子:"<<nume<<" "<<"分母"<<deno<<endl;}CFraction CFraction::operator+(CFraction &c2){    CFraction c;    if(deno==c2.deno)    {        c.deno=deno;        c.nume=nume+c2.nume;    }    else        {            c.deno=deno*c2.deno;            nume=nume*c2.deno;            c2.nume=c2.nume*deno;            c.nume=nume+c2.nume;        }        return c;}CFraction CFraction::operator-(CFraction &c2){    CFraction c;    if(deno==c2.deno)    {        c.deno=deno;        c.nume=nume-c2.nume;    }    else        {            c.deno=deno*c2.deno;            nume=nume*c2.deno;            c2.nume=c2.nume*deno;            c.nume=nume-c2.nume;        }        return c;}CFraction CFraction::operator*(CFraction &c2){    CFraction c;    c.nume=nume*c2.nume;    c.deno=deno*c2.deno;    return c;}CFraction CFraction::operator/(CFraction &c2){    CFraction c;    c.nume=nume*c2.deno;    c.deno=deno*c2.nume;    return c;}    int main(){    CFraction c1(2,3),c2(3,4),c3;    c3=c1+c2;    c3.display();    c3=c1-c2;    c3.display();    c3=c1*c2;    c3.display();    c3=c1/c2;    c3.display();    return 0;}

运行结果:

知识点总结:

运算符重载要注意声明函数时的写法,在构造函数式时的写法,在main函数中操作时有两种方式。

学习心得:

运算符重载函数是很方便的一类函数,但是需要注意的问题也有很多。

0 0
原创粉丝点击