码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-10-01 19:10:49      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

课程主页中: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周(春天的)工程——运算符重载(两)

标签:

原文地址:http://www.cnblogs.com/gcczhongduan/p/4851337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!