鱼C论坛

 找回密码
 立即注册
查看: 788|回复: 3

[已解决]关于类对象数组初始化的问题

[复制链接]
发表于 2020-4-13 22:24:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
using namespace std;
int howday(int i)
{
        switch(i)
        {
                case 1:i=31;break;
                case 2:i=59;break;
                case 3:i=90;break;
                case 4:i=120;break;
                case 5:i=151;break;
                case 6:i=181;break;
                case 7:i=212;break;
                case 8:i=243;break;
                case 9:i=273;break;
                case 10:i=304;break;
                case 11:i=334;break;
                case 12:i=365;break;
        }
        return i;
}
class Date
{
        public:
                Date(int y,int m,int d):Year(y),Month(m),Day(d){}
                void SetDate();
                void GetDate();
                int DiffDate();
                void AddDate(int num);
        private:
                int Year;
                int Month;
                int Day;
};
void Date::SetDate()
{
        cout<<"请输入年"<<endl;
        cin>>Year;
        cout<<"请输入月"<<endl;
        cin>>Month;
        cout<<"请输入日"<<endl;
        cin>>Day;
       
}
void Date::GetDate()
{
        cout<<Year<<"."<<Month<<"."<<Day<<endl;
}
int Date::DiffDate()
{
        int y=2020;
        int m=4;
        int d=9;
        y=(y-this->Year)*365;
        m=howday(m)-howday(this->Month);
        d=d-this->Day;
        return y+m+d;
}
void Date::AddDate(int num)
{
        this->Day+=num;
        while(this->Day>31)
        {
                Day-=30;
                Month++;
        }
        while(this->Month>12)
        {
                Month-=12;
                Year++;
        }
        cout<<"改变后的日期是: "<<this->Year<<"."<<this->Month<<"."<<this->Day<<endl;
}

int main()
{
        Date D[3]={
        Date(2001,2,5),
        Date(2001,2,5),
        Date(2001,2,5),//这里初始化用的是小括号
        };
        Date D1[3]={
        Date{2001,2,2},
        Date{2001,2,2},
        Date{2001,2,2}//这里初始化用的是大括号
        };
        class Date *pDate;
        int i=0;
        pDate=D;
        /*for(;i<3;i++)
        {
                D[i].SetDate();
        }*/
        D[1].GetDate();
        (pDate+1)->GetDate();
    i=D[2].DiffDate();
    cout<<"过了"<<i<<"天"<<endl;
    D[0].AddDate(10);
    return 0;
}//我想问这两种初始化既然都可以通过,那么区别是什么,用的是devc
最佳答案
2020-4-13 22:38:46
刚刚学习了一下,用大括号进行初始化的警告
warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
这个警告是说这种初始化的方式c++11或者gnu++11中才能正常使用。
低版本的的C++中会有问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-13 22:38:46 | 显示全部楼层    本楼为最佳答案   
刚刚学习了一下,用大括号进行初始化的警告
warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
这个警告是说这种初始化的方式c++11或者gnu++11中才能正常使用。
低版本的的C++中会有问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 15:34:50 | 显示全部楼层
sunrise085 发表于 2020-4-13 22:38
刚刚学习了一下,用大括号进行初始化的警告
warning: extended initializer lists only available with -s ...

那这两个区别是什么呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 15:46:35 | 显示全部楼层
320374616 发表于 2020-4-14 15:34
那这两个区别是什么呢

?????
区别就是在不同的版本中使用啊,这就是规则啊,记住就行了。

就像是汉字的读音,在不同版本的新华字典中部分汉字的读音会发生变化,
以前是“一骑(ji)红尘妃子笑”,现在改成了“一骑(qi)红尘妃子笑”
你说这俩有啥区别?就是以前读ji,现在读qi,规定啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 06:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表