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

纯纯的课本C++练习

2008-12-08 21:46 246 查看
//双目目运算符重载——复数的加减运算符的重载
/*
#include<iostream>
using namespace std;
class complex
{
double real,imag;
public:
complex(double r=0.0,double i=0.0) {real=r;imag=i;}//构造函数
complex operator + (complex c2); //将+运算符重载为成员函数
complex operator - (complex c2); //将-运算股重载为成员函数
void display();
};
complex complex::operator +(complex c2)
{
return complex(real+c2.real,imag+c2.imag);
}
complex complex::operator -(complex c2)
{
return complex(real-c2.real,imag-c2.imag);
}
void complex::display()
{
cout<<"("<<real<<","<<imag<<")"<<endl;
}
void main()
{
complex c1(5,4),c2(2,10),c3;
cout<<"c1=";c1.display();
cout<<"c2=";c2.display();
c3=c1-c2; //理解为c1.operator-(c2),c1里的数据可以直接访问。
cout<<"c3=c1-c2=";
c3.display();
c3=c1+c2;
cout<<"c3=c1+c2=";
c3.display();
}
*/
//单目运算符重载——"++"运算符的重载
#include<iostream>
using namespace std;
class Clock
{
public:
Clock(int NewH=0,int NewM=0,int NewS=0);
void ShowTime();
Clock &operator ++(); //引用调用 前置单目运算符重载
Clock operator ++(int); //后置单目运算符重载
private:
int Hour,Minute,Second;
};
Clock::Clock(int NewH,int NewM,int NewS)
{
if(0<=NewH && NewH<24 && 0<=NewM && NewM<60 && 0<=NewS && NewS<60)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
else
cout<<"Time error!"<<endl;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
Clock & Clock::operator ++()//前置单目运算符重载函数
{
Second++;
if(Second>=60)
{
Second=Second-60;
Minute++;
if(Minute>=60)
{
Minute=Minute-60;
Hour++;
Hour=Hour%24;
}
}
return *this;
}
Clock Clock::operator ++(int)//后置单目运算符重载函数
{
Clock old=*this;
++(*this);
return old;
}
int main()
{
Clock myClock(23,59,59);
cout<<"First time output:";
myClock.ShowTime();
cout<<"Show myClock++:";
(myClock++).ShowTime();
cout<<"Show ++myClock:";
(++myClock).ShowTime();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: