课程主页中: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菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====

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

2013级别C++文章9周(春天的)工程——运算符重载(两)的更多相关文章

  1. 2013级C++第13周(春)项目——继承的进一步话题与GUI应用开发

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 第一部分 程序阅读:阅读以下类的定义,请说出在 ...

  2. 2013级C++第15周(春)项目——输入输出流及文件文件操作

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 本周程序阅读及程序调试中须要的文件,请到htt ...

  3. 2013级C++第14周(春)项目——多态性、虚函数和抽象类

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 第一部分 阅读程序1.阅读.改动和执行关于交通 ...

  4. 2013级C++第12周(春)项目——成员的訪问属性、多重继承

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 第一部分 程序阅读 1.阅读程序.分析类中成员 ...

  5. NHibernate系列文章二:创建NHibernate工程

    摘要 这篇文章介绍了如何创建一个简单的使用NHibernate的控制台应用程序,包括使用NuGet.简单的配置.单表映射.对NHibernate配置文件添加智能提示.使用ISessionFactory ...

  6. C++走向远洋——47(第十二周、运算符重载基础程序、阅读)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  7. c++ list, vector, map, set 区别与用法比较

    http://blog.csdn.net/alex_xhl/article/details/37692297 List封装了链表,Vector封装了数组, list和vector得最主要的区别在于ve ...

  8. C++回顾day02---<运算符重载>

    一:运算符重载的限制 (一)可以重载的运算符: + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << > ...

  9. list, vector, map, set 区别与用法比较

    List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]. Vector对于随机 ...

随机推荐

  1. Qt的一些开发技巧

    Lambda匿名函数 有时候槽函数代码辑逻辑非常简单,可以直接用下面的Lambda匿名函数处理信号,简捷明了.需c++11支持,不支持自身递归调用. 1 2 3 4 5 6 7 QComboBox * ...

  2. 获取iOS顶部状态栏和Navigation的高度

    状态栏的高度 20 [[UIApplication sharedApplication] statusBarFrame].size.height Navigation的高度 44 self.navig ...

  3. 10.13 android输入系统_多点触摸驱动理论与框架

    1.多点触摸驱动理论 驱动程序仅上报多个触点的位置就可以,是放大还是缩小由应用程序控制 对于多点触摸驱动在linux系统中有个输入子系统,其已经实现了open/read/write等接口 我们只需要实 ...

  4. 8.2 Android灯光系统_led_class驱动

    android-5.0.2\hardware\libhardware\include\hardware\lights.h  //系统一些宏定义 android源码只带的灯光驱动在linux内核的dri ...

  5. 字符的输入和输出即:getchar和putchar

    #include <stdio.h> int main(int argc, const char * argv[]) { putchar(getchar());//这种方式就是输入一个字符 ...

  6. css3-13 css3的3D动画如何实现

    css3-13 css3的3D动画如何实现 一.总结 一句话总结:这里是transform+setInterval实现.transform属性里面的rotate属性值变成rotateX或rotateY ...

  7. [Angular2 Form] Angular 2 Template Driven Form Custom Validator

    In this tutorial we are going to learn how we can also implement custom form field validation in Ang ...

  8. (五)RabbitMQ消息队列-安装amqp扩展并订阅/发布Demo(PHP版)

    原文:(五)RabbitMQ消息队列-安装amqp扩展并订阅/发布Demo(PHP版) 本文将介绍在PHP中如何使用RabbitMQ来实现消息的订阅和发布.我使用的系统依然是Centos7,为了方便, ...

  9. [CSS] Reduce Ambiguity in Class Names using a Naming Convention

    A solid naming convention makes it less likely to run into naming conflicts and helps establish a se ...

  10. [AngularFire2] Signup and logout

    import {AuthProviders, FirebaseAuthState, FirebaseAuth, AuthMethods} from "angularfire2";i ...