使用友元类处理日期和时间

#include <iostream>

using namespace std;

class Date; //对Date类的提前引用声明

class Time
{
public:
    Time(int,int,int);
    void add_a_second(Date &); //增加1秒,1秒后可能会到了下一天,乃到下一月、下一年
    void display(Date &);  //显示时间,格式:月/日/年 时:分:秒

private:
    int hour;
    int minute;
    int sec;
};

class Date//日期类
{
public:
    Date(int,int,int);
    friend class Time;//Time为Date的友元类

private:
    int month;
    int day;
    int year;
};


void main( )
{
    Time t1(23,59,32);
    
    Date d1(12,29,2012);
    
    for(int i=0; i<=80; i++)
    {
        t1.add_a_second(d1);
        t1.display(d1);
    }
    
    system("pause");
}

//初始化时间
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)//增加1秒,1秒后可能会到了下一天,乃到下一月、下一年
{
    sec++;//增加1秒

    if(sec>59)//当超过59秒后
    {
        sec = sec % 60;
        minute++;//增加1分钟
    }

    if(minute>59)//当超过59分钟后
    {
        minute = minute % 60;
        hour++;//增加1小时
    }

    if(hour>23)//当超过23小时后
    {
        hour = hour % 24;

        d.day++;//增加1天
    }

     if(d.day>30)//当超过30天后
    {
        d.day = d.day % 30;

        d.month++;//增加1个月
    }

     if(d.month>12)//当超过12个月后
    {
        d.month = d.month % 12;

        d.year++;//增加1年
    }
}

//显示日期和时间
void Time::display(Date &d)//显示时间,格式:月/日/年 时:分:秒
{
    cout<<d.year<<'/'<<d.month<<'/'<<d.day<<" "<<hour<<':'<<minute<<':'<<sec<<endl;
}


执行结果:


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
友元类是指在一个类中,可以访问另一个类的私有成员和保护成员。使用友元类可以实现一些特殊的功能,如让两个类之间互相访问私有成员。下面是使用友元类的一些基本步骤: 1. 声明友元类 在要访问另一个类的私有成员或保护成员的类中,需要声明另一个类为友元类。例如: ```c++ class B; class A { public: void func(B& b); private: int x; friend class B; }; ``` 在上面的例子中,类A中声明了类B为友元类,这样类B就可以访问类A中的私有成员x。 2. 定义友元类 在被声明为友元类的类中,需要定义友元类。例如: ```c++ class A; class B { public: void func(A& a); private: int y; friend class A; }; void B::func(A& a) { a.x = 10; // 访问类A的私有成员x } ``` 在上面的例子中,类B中定义了一个函数func,参数是类A的引用。由于类A声明了类B为友元类,因此在函数func中可以访问类A的私有成员x。 3. 使用友元类 使用友元类很简单,只需要在需要访问私有成员或保护成员的地方调用友元类中的函数即可。例如: ```c++ int main() { A a; B b; b.func(a); // 访问类A的私有成员x return 0; } ``` 在上面的例子中,创建了类A的对象a和类B的对象b。在main函数中调用了类B中的函数func,传入了类A的对象a作为参数,这样就可以访问类A的私有成员x了。 需要注意的是,虽然使用友元类可以访问另一个类的私有成员和保护成员,但这并不是一个好的设计习惯。友元类破坏了类的封装性,会导致代码的可维护性变差,因此应该尽量避免使用友元类

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值