zoukankan      html  css  js  c++  java
  • 2013级别C++文章9周(春天的)工程——运算符重载(两)

    课程主页中:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接


    【程序阅读】阅读程序“简单C++学生信息管理系统”,找出当中出现构造函数、友元函数、运算符重载、静态数成员语法现象出现的位置,细致体会其使用方法。在以后的设计中可以灵活应用有关方法和技巧

    项目1-3直接复制第8周的代码,增加要求的运算符重载定义后,作为第9周的任务另外发博文。


    【项目1】在第8周项目1基础上
    (1)再定义一目运算符 -,-c相当于0-c。
    (2)定义Complex类中的<<和>>运算符的重载,实现输入和输出。改造原程序中对运算结果显示方式,使程序读起来更自然。



    【项目2】在第8周项目2基础上
    (1)定义对时间对象的自增和自减一目运算符

    	//一目运算符的重载
    	CTime operator++(int);//后置++,下一秒
    	CTime operator++();//前置++,下一秒,前置与后置返回值不一样
    	CTime operator--( int);//后置--,前一秒
    	CTime operator--();//前置--,前一秒
    (2)定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。


    【项目3】在第8周项目3基础上
    (1)定义分数的一目运算+和-,分别代表分数取正和求反,将“按位取反运算符”~重载为分数的求倒数运算。
    (2)定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。



    【项目4】建立一个向量类MyVector,声明例如以下,请完毕类的定义

    class MyVector          //定义向量类
    {
    public:
        MyVector(int m);    //构造函数,共同拥有m个元素的向量,元素值预置为0
        MyVector(const MyVector &v);  //复制构造函数
        ~MyVector(); //析构函数:释放动态数组所占用的存储空间
        friend istream &operator>>(istream &input, MyVector &d);
        friend ostream &operator<<(ostream &output, const MyVector &d);
        friend MyVector operator+(const MyVector &d1,const MyVector &d2);//向量相加,相应位置上的元素相加
        friend MyVector operator-(const MyVector &d1,const MyVector &d2);//向量相减。相应位置上的元素相减
        bool operator==(const MyVector &d);//推断两个矩阵是否相等。即相应位置上的全部元素是否相等
    private:
        int *Array;       //Array 为动态数组指针,指向向量占用内存的起始地址
        int num;          //向量中元素个数
    };
    int main(){
        MyVector d1(5),d2(5);
        cout<<"输入d1——";
        cin>>d1;
        cout<<"输入d2——";
        cin>>d2;
        cout<<"d1="<<d1<<endl;
        cout<<"d2="<<d2<<endl;
        cout<<"d1+d2="<<d1+d2<<endl;
        cout<<"d1-d2="<<d1-d2<<endl;
        cout<<"d1"<<((d1==d2)?

    "==":"!=")<<"d2"<<endl; return 0; }


    【项目5】设计一元一次方程类,求形如ax+b=0的方程的解。
    比如:输入3x-8=0时。输出的方程的解为x=2.66667;
    再如:输入5s+18=0时,输出的方程的解为s=-3.6; 
    class CEquation
    {
    private:
    	double a;     // 未知数系数
    	double b;     // 常数项
    	char unknown; // 代表未知数的符号
    public:
    	CEquation(double aa=0,double bb=0);
    	friend istream &operator >> (istream &in,CEquation &e);
    	friend ostream &operator << (ostream &out,CEquation &e);
    	double Solve();
    	char getUnknown();
    };
    int main()
    {	CEquation e;
    	cout<<"请输入方程(格式:ax-b=0,a、b为常数,x处是代表未知数的字母):";
    	cin>>e;   //在两次測试中,分别输入3x-8=0和50s+180=0
    	cout<<"方程为:"<<e;
    	cout<<"方程的解为:"<<e.getUnknown()<<"="<<e.Solve()<<endl; //对两次測试,分别输出x=...和s=...
    	e.Solve();
    }




    ==================== 迂者 贺利坚 CSDN博客专栏=================
    |== IT学子成长指导专栏 专栏文章的分类文件夹(不定期更新) ==|
    |== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
    |== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
    ===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====



    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Handsontable添加超链接
    Handsontable 筛选事件
    handsontable自定义渲染
    M1 Mac安装 Homebrew
    Pypi官网怎么找历史依赖包
    在 CentOS7 中我们在安装 MySQL
    Ansible使用yum安装
    Ansible集群自动化运维操作
    java对list中map集合中某个字段排序
    使用hive的orcfiledump命令查看orc文件
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4851337.html
Copyright © 2011-2022 走看看