C++学习-类和对象

要求:
1.建立一个分数类。分数类的成员包括分子和分母,操作包括约分、通分、加、减、乘、除、复制赋值、求倒数、比较、显示、输入;
2.加(+)、减(-)、乘(*)、除(/)、比较(>, >=, <, <=)、复制赋值(=)的操作采用运算符重载的方式实现;
3.功能要求:能够处理int,double,float型数据与分数类对象的混合运算;
4.测试用例涵盖所有功能(包括分数类之间的运算以及分数类与int,double,float型数据的运算),需包含运行结果图、测试目的说明、运行结果分析;
5.代码整洁、规范
6.附运行结果图,并对测试用例、测试目的、运行结果进行说明与分析
一些相关问题:
1.简述成员函数与友元函数的区别,并分析哪些功能需要用成员函数实现,哪些功能需要用友元函数实现;
①成员函数是类定义的一部分,通过特定的对象来调用。成员函数可以隐式访问调用对象的成员,而无须使用成员操作符。友元函数不是类的组成部分,因此被称为直接函数调用。友元函数不能隐式访问类成员,而必须将成员操作符用于作为参数传递的对象。作为类的非成员函数,而且当要访问的数据为对象的私有成员函数时,则必须声明为类的友元函数。
②当运算符重载函数作为类的成员函数时,要求操作数左边必须是一个对象,而函数的参数可以是同类的对象也可以是普通的变量。
③因为默认的复制赋值运算符是成员函数,友元函数不能取代成员函数,因此复制复制运算符(=)重载也必须为成员函数。而分数类的四则运算,以及比较运算既可以使用成员函数也可以使用友元函数,但涉及到分数类对象与不同数据类型的运算时,必须使用友元函数。
2.简述传值与引用的区别,并分析不同函数所需采用的参数传递方式,并简述原因;
①传值调用传递的是变量的拷贝,而后两种调用传递的则是变量本身,因此传值调用中改变的仅是变量的拷贝,而不是变量本身,相反,当需要改变变量本身的时候就可以用后两种调用。
②当传递的变量很大时,传值调用的结果就是效率低下,因为会经过一个型参到实参的拷贝过程,而后两种调用由于传递的就是变量本身,因此效率会高些。
③传引用调用和传指针调用的区别是引用参数必须指向一个对象,而且在函数中不能改变所指,相反,传指针调用则不存在这个问题,指针开始可以是一个什么都不指向的空指针,而且在函数中可以指向不同的对象。
④对分数类的四则运算及比较运算均为引用的方式不需要创建临时变量,可以提高效率;而复制赋值运算时是传值的形式,不影响实参;
C++代码:

#include<iostream>
#include<cmath>
using namespace std;

class Fraction
{
   
    double nume;   //分子
    double deno;   //分母
public:
    Fraction(double nume = 0, double deno = 1);    //默认参数
    void reduction();                           //约分
    void tongfen(Fraction& , Fraction& );     //通分
    void display();                 //显示分数
    void input();                   //输入分数

    //重载四则运算符
    friend Fraction operator +(Fraction& , Fraction&);  //加法
    friend Fraction operator -(Fraction& , Fraction&);  //减法
    friend Fraction operator *(Fraction& , Fraction&);  //乘法
    friend Fraction operator /(Fraction& , Fraction&);  //除法
    Fraction operator =(Fraction);        //复制赋值

    //重载比较操作符
    friend bool operator > (Fraction&, Fraction&);    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值