📄 class.cpp
字号:
#include <iostream.h>
//【例9.1】定义一个表示日期的类
class CDate
{
private: //A
int year , month, day;
public:
void SetDate (int y,int m,int d)
{
year=y;
month=m;
day=d;
}
void Print ( )
{
cout<<year<<"年"<<month<<"月"<<day<<"日";
}
};
void main()
{
CDate dd;
}
//【例9.2】在类体外实现例9.1中成员函数的定义,并增加一个判断是否闰年的成员函数。
class CDate2
{
public :
void SetDate (int y,int m,int d) //在类体内实现的函数,为内联函数
{
year=y;
month=m;
day=d;
}
void Print ();
int IsLeapYear ( );
private:
int year, month, day;
};
void CDate2::Print( )
{
cout<<year<<"年"<<month<<"月"<<day<<"日";
}
inline int CDate2::IsLeapYear( ) //在类体外定义内联函数
{
return (year%4==0&&year%100!=0)||(year%400==0);
}
void main9_2()
{
CDate2 dd;
}
//【例9.3】定义一个描述线段的类,要求能够设置该线段,并能获取其坐标值以及该线段的长度。
//分析:一条线段可用两个端点的坐标来描述,两个端点的坐标分别用(x1, y1)和(x2,y2)来表示。
#include<math.h>
class CLine{
float x1,y1;
public:
float x2,y2;
public:
void SetCoord(float,float,float,float); //设置坐标值函数
float GetCoordX1(){ return x1; } //获取第一个端点的横坐标
float GetCoordY1(){ return y1; } //获取第一个端点的纵坐标
void Print(void)
{
float L;
L=sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1));
cout<<"该直线的长度为:"<<L<<'\n';
}
};
void CLine::SetCoord(float a1,float b1,float a2,float b2)
{
x1=a1;y1=b1;
x2=a2;y2=b2;
}
void main9_3(void)
{
CLine line1 , line2;
line1.SetCoord(50,60,100,200);
cout<<"x1="<<line1.GetCoordX1()<<'\n'; //A
cout<<"y1="<< line1.GetCoordY1()<<'\n'; //B
cout<<"x2="<< line1.x2<<'\n';
cout<<"y2="<< line1.y2<<'\n';
line1.Print();
line2= line1; //C
line2.Print();
}
//【例9.4】定义一个时间类。
class CTime{
int hours,minutes;
public:
void SetTime(int new_hours,int new_minutes) //A 函数体中使用了隐含的*this指针
{
hours=new_hours;minutes=new_minutes;
}
void GetTime(int ¤t_hours, int ¤t_minutes)
{
current_hours=hours;current_minutes=minutes;
}
void CopyTime(CTime &Time2);
};
void CTime::CopyTime(CTime &Time2)
{
*this=Time2; //B *this指针代表当前对象
}
void main9_4(void)
{
int hrs,mins;
CTime Time1,Time2;
Time1.SetTime(10,30);
Time2.SetTime(12,15);
Time1.GetTime(hrs,mins);
cout<<" Time is:"<<hrs<<":"<<mins<<'\n';
Time1.CopyTime(Time2);
Time1.GetTime(hrs,mins);
cout<<"Affter copying Time2 to Time1, the time is:"
<<hrs<<":"<<mins<<'\n';
}
//【例9.5】 设计一个CbankAccount类,用来模拟银行为客户开一个银行帐号存款并取款的过程。
class CBankAccount{
public:
CBankAccount() //构造函数
{account=0;balance=0.0;}
void MakeDeposit(long count_num,float amount) //存款 第一个参数:帐号
{
account=count_num;
balance+=amount;
cout<<account<<"\t"<<"After deposit,the balance is:\t"<<balance<<endl;
}
float WithDraw(long count_num,float amount); //取款
private:
long account; //帐号
float balance; //余额
};
float CBankAccount::WithDraw(long count_num,float amount) //取款
{
if(account!=count_num) //如果输入的帐号不对
{
cout<<"Illegal account_number!"<<endl;
return 0.0;
}
if(balance<amount) //如果余额少于取款数额
{
cout<<"The amount to withdraw is beyond the balance."<<endl;
return 0.0;
}
balance-=amount;
cout<<account<<"\tAfter withdraw,the balance is :\t"<<balance<<endl;
return balance;
}
void main9_5()
{
CBankAccount a,b; //两个对象中的成员数据都为0
a. MakeDeposit(1001,1000);
a.WithDraw(1001,500);
a.MakeDeposit(1001,2000);
a.WithDraw(1001,1000);
b.MakeDeposit(1002,5000);
b.WithDraw(1002,2000);
b.WithDraw (1002,8000);
b.WithDraw(1003,2000);
b.WithDraw(1002,2000);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -