您的位置:首页 > 编程语言 > C语言/C++

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

2015-10-01 18:32 344 查看
课程主页中:/article/1353314.html,内有完整教学方案及资源链接

【程序阅读】阅读程序“简单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菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: