C++3个例子.docx
- 文档编号:24545284
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:16
- 大小:52.77KB
C++3个例子.docx
《C++3个例子.docx》由会员分享,可在线阅读,更多相关《C++3个例子.docx(16页珍藏版)》请在冰豆网上搜索。
C++3个例子
1.定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。
具体要求如下:
(1)编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数;
(2)由车(vehicle)基类派生出自行车(bicycle)类、汽车类(motorcar),从bicycle类和motorcar类派生出摩托车类(motorcycle),它们都有Run、Stop等成员函数。
(3)在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。
(4)分别用vehicle类型的指针来调用几个对象的成员函数,看看能否成功(提示:
把Run、Stop定义为虚函数)。
代码如下:
#include
usingnamespacestd;
classVehicle
{
public:
Vehicle()
{
cout<<"VehicleStart"< } virtual~Vehicle() { cout<<"VehicleEnd"< } virtualvoidrun() { cout<<"VehicleRun"< } virtualvoidstop() { cout<<"VehicleStop"< } }; classBicycle: virtualpublicVehicle { public: Bicycle() { cout<<"BicycleStart"< } virtual~Bicycle() { cout<<"BicycleEnd"< } virtualvoidrun() { cout<<"BicycleRun"< } virtualvoidstop() { cout<<"BicycleStop"< } }; classMotorcar: virtualpublicVehicle { public: Motorcar() { cout<<"MotorcarStart"< } virtual~Motorcar() { cout<<"MotorcarEnd"< } virtualvoidrun() { cout<<"MotorcarRun"< } virtualvoidstop() { cout<<"MotorcarStop"< } }; classMotorcycle: publicMotorcar,publicBicycle { public: Motorcycle() { cout<<"MotorcycleStart"< } ~Motorcycle() { cout<<"MotorcycleEnd"< } voidrun() { cout<<"MotorcycleRun"< } voidstop() { cout<<"MotorcycleStop"< } }; intmain() { Vehiclev,*p; cout< Motorcyclem1; cout< Motorcarm2; cout< Bicycleb; cout< cout<<"--------------------"< p=&v; p->run(); p->stop(); cout< p=&m1; p->run(); p->stop(); cout< p=&m2; p->run(); p->stop(); cout< p=&b; p->run(); p->stop(); cout< cout<<"--------------------"< return0; } 运行结果: 2.设计一个时钟类TIME,内含数据成员hour,minute,second表示时间,成员函数set()设置时间数据,show()显示时间数据。 重载运算符++和--(具有返回值),每执行一次++,second自增1,执行一次--,second自减1。 second和minute的值在0~59区间循环(满59后再自增则归0,minute加1;second为0时再自减则为59,minute减1)。 hour的值在0~23区间循环。 源代码如下: #include usingnamespacestd; classTime { private: inthour; intminute; intsecond; public: Time(int=0,int=0,int=0); ~Time(){} voidsethour(int); voidsetminute(int); voidsetsecond(int); intgethour(); intgetsecond(); intgetminute(); voidset(int=0,int=0,int=0); voidshow(); Time&operator++(int); Time&operator--(int); }; Time: : Time(inth,intm,ints) { if(s>59) { s%=60; m=m+s/60; } if(m>59) { m%=60; h=h+m/60; } if(h>23)h%=24; hour=h; minute=m; second=s; } voidTime: : sethour(inth) { if(h>23)h%=24; hour=h; } voidTime: : setminute(intm) { if(minute>59) { minute%=60; hour=hour+minute/60; } if(hour>23)hour%=24; minute=m; } voidTime: : setsecond(ints) { if(s>59) { minute=minute+s/60; s%=60; } if(minute>59) { hour=hour+minute/60; minute%=60; } if(hour>23)hour%=24; second=s; } intTime: : gethour() { returnhour; } intTime: : getsecond() { returnsecond; } intTime: : getminute() { returnminute; } voidTime: : set(inth,intm,ints) { if(s>59) { m=m+s/60; s%=60; } if(m>59) { h=h+m/60; m%=60; } if(h>23)h%=24; hour=h; minute=m; second=s; } voidTime: : show() { cout< "< "< } Time&Time: : operator++(int) { second++; if(second>59) { minute=minute+second/60; second%=60; } if(minute>59) { hour=hour+minute/60; minute%=60; } if(hour>23)hour%=24; return*this; } Time&Time: : operator--(int) { second--; if(second<0) { minute--; second=59; } if(minute<0) { minute=59; hour--; } if(hour<0)hour=0; return*this; } intmain() { Timet; intx,y,z; chartemp; cout<<"现在初始化计数器(HourMinuteSecond): "; cin>>x;cin>>y;cin>>z; t.set(x,y,z); cout<<"现在时间是: "; t.show(); do { cout<<"输入*重新设置计数器;"< cout<<"输入+计数器递加,输入-计数器递减;"< cout<<"输入字母o计数器清零;"< cout<<"输入q退出计数器。 "< cout<<"请输入>"; cin>>temp; switch(temp) { case'*': cout<<"现在初始化计数器(HourMinuteSecond): "; cin>>x;cin>>y;cin>>z; t.set(x,y,z); cout<<"现在时间是: "; t.show(); break; case'+': t++; cout<<"现在时间是: "; t.show(); break; case'-': t--; cout<<"现在时间是: "; t.show(); break; case'o': t.set(0,0,0); cout<<"现在时间是: "; t.show(); break; case'q': break; default: cout<<"请输入正确的数据! "< break; } }while(temp! ='q'); return0; } 运行结果如下: 3. 设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果: A(x1,y1),B(x2,y2) Distance1=d1 Distance2=d2 #include #include usingnamespacestd; classLocation { public: Location(double=0.0,double=0.0); doubleGetx(); doubleGety(); doubledistance1(Location&); frienddoubledistance2(Location&,Location&); private: doublex,y; }; Location: : Location(doublex0,doubley0) { x=x0;y=y0; } doubleLocation: : Gety() { returny; } doubleLocation: : Getx() { returnx; } doubleLocation: : distance1(Location&p) { returnsqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)); } doubledistance2(Location&p1,Location&p2) { returnsqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); } intmain() { Locationa(1.0,1.0),b(2.0,2.0); cout<<"a"<<"("< cout<<"b"<<"("< cout< cout< return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 个例
![提示](https://static.bdocx.com/images/bang_tan.gif)