C++ 面向对象编程 析构函数 ,构造函数的实例

深入理解 JVM 原理
深入理解 JVM 原理
wangxiaoming

                                C++ 面向对象编程

 编写一个程序  :
     
                 用 年月日输出日期 

进行日期加1 的操作

设置日期

  程序实现 :
要注意几点, 一是要判断平年闰年  这个是加1日期时最容易出错的地方

                       其次是构造函数用来进行初始化   , 主要有参数构造函数和无参数构造函数

                        析构函数放在 setDate 后面应来完成释放资源的清理工作 , 用new 创建 动态对象要 用delete 来清除
                      
看代码:
 
#include<iostream>
using namespace std;

class Cdate
{
   private:
        int month;
        int year;
        int day;
   public:
        Cdate() ;   //构造函数
        Cdate(int , int ,int );   //有参数构造函数
        void setdate(int ,int , int );
        void adddate();
        void display();
        ~Cdate() ;    //析构函数
    private:
        bool Isleap();
};
Cdate::Cdate()
{
    //无参数构造函数
}
Cdate::Cdate(int y, int m, int d)
{//有参数构造函数
    year = y;
    month = m;
    day = d;
}
void Cdate::display()
{
    cout<<year<<" 年 "<<month<<" 月 "<<day<<" 日 "<<endl;
}
void Cdate::adddate()
{
    day++;
    if(Isleap())
    {
        if(month == 2&& day== 30)
        {
            month++;
            day = 1;
            return ;
        }
    }
    else
    {
        if(month == 2  && day == 29)
        {
            month++;
            day = 1;
            return ;//  如果是平年 那么二月份是28天
        }
    }
    //下面要处理的是日号大于31天和等于31天的情况了
    if(day >31)
    {
       if(month ==12)
       {
           day =1;
           month = 1;
           year ++;
       }
       else
       {
           month++;
           day = 1;
       }
    }
    else if (day == 1)
    {
        if(month == 4 || month == 6 ||month == 9|| month == 11)
        {
            day = 1;
            month ++;
        }
   }
}
void  Cdate::setdate(int y, int m ,int d)
{
    month = m;
    year = y;
    day = d;
}
Cdate::~Cdate(){}
bool Cdate::Isleap()
{
    if(year%100 == 0 && year%400 == 0 )
    {
       return true;

    }
    if(year%100 != 0 && year%4 == 0 )
    {
        return true;
    }
    return false ;
}
int main()
{

     int day , year , month;
     cout<<"年 月 日"<<endl;
     while(cin>>year>>month>>day)
     {

        if(month> 12  || month <= 0)
        {
            cout<<"日期输入错误, 重新输入: "<<endl;
            continue;
        }
        if(day<= 0 || day >31)
        {
            cout<<"日期输入错误, 重新输入: "<<endl;
            continue;
        }

        Cdate  c ;
        c.setdate(year, month, day);
        cout<<"当前日期:"<<endl;
        c.display();
        c.adddate();
        cout<<"当前日期加1:"<<endl;
        c.display();
     }
    return 0;
}

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值