C++第三次作业
2016-06-05 22:25
495 查看
一、友元类
二、友元函数
#include <iostream> using namespace std; class Date; class Time { public: Time(int,int,int); void add_a_second(Date &); void display(Date &); private: int hour; int minute; int sec; }; class Date { public: Date(int,int,int); friend class Time; private: int month; int day; int year; }; int main( ) { Time t1(23,59,32); Date d1(12,31,2013); for(int i=0; i<=80; i++) { t1.add_a_second(d1); t1.display(d1); } return 0; } Time::Time(int h,int m,int s) { hour=h; minute=m; sec=s; } Date::Date(int m,int d,int y) { month=m; day=d; year=y; } void Time::add_a_second(Date &d) { if(++sec>=60) ++minute,sec-=60; if(minute>=60) ++hour,minute-=60; if(hour>=24) ++d.day,hour-=24; if(d.day>30) ++d.month,d.day-=30; if(d.month>12) ++d.year,d.month-=12; } void Time::display(Date &d) { cout<<d.month<<"/"<<d.day<<"/"<<d.year<<" "; cout<<hour<<":"<<minute<<":"<<sec<<endl; }
二、友元函数
#include<iostream> #include<Cmath> using namespace std; class CPoint { private: double x; double y; public: CPoint(double xx=0,double yy=0):x(xx),y(yy) {} double distance1(CPoint &); friend double distance2(CPoint &, CPoint &) ; double getX() { return x; } double getY() { return y; } }; double distance3(CPoint &,CPoint &) ; double CPoint::distance1(CPoint &p) { double dx=(x-p.x), dy=y-p.y; return sqrt(dx*dx+dy*dy); } double distance2(CPoint &p1,CPoint &p2) { double dx=(p1.x-p2.x), dy=p1.y-p2.y; return sqrt(dx*dx+dy*dy); } double distance3(CPoint &p1,CPoint &p2) { double dx=(p1.getX()-p2.getX()), dy=p1.getY()-p2.getY(); return sqrt(dx*dx+dy*dy); } int main() { CPoint p1(10,13), p2(-5,6); cout<<"1. "<<p1.distance1(p2)<<endl; cout<<"2. "<<distance2(p1,p2)<<endl; cout<<"3. "<<distance3(p1,p2)<<endl; return 0; }