现在的位置: 首页 > 综合 > 正文

C++之对象数组和对象指针

2017年10月13日 ⁄ 综合 ⁄ 共 1152字 ⁄ 字号 评论关闭

一、对象数组:每一个数组元素都是对象的数组。

示例:

#include<iostream>
const int N=100;

using namespace std;

class Date
{
    private:
    int year,month,day;
    public:
    Date();
    Date(int y,int m,int d);
    void show();
};

Date::Date(int y,int m,int d)
{
    year=y;
    month=m;
    day=d;
}

Date::Date()
{}

void Date::show()
{
    cout<<year<<' '<<month<<' '<<day<<endl;
}
int main()
{
    Date date[N];
    int n,y1,m1,d1;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>y1>>m1>>d1;
        date[i-1]=Date(y1,m1,d1);
        date[i-1].show();
    }
    return 0;
}

Ps  :

第一,在编译的过过程中出现了错误,(undefined reference to)一开始,就是我的Date();没有实现,仅仅进行了声明。

第二,在定义了带参数的构造函数后,如果需要定义数组,就需要定义一个不带参数的构造函数Date();如果没有定义这个函数,在定义对象数组的时候有默认的是调用的带参数的构造函数,而,这又不符合我的目的,我定义数组,并不是想要初始化它,仅仅是定义而已。

第三,不带参数的构造函数Date();实现的时候是可以为空函数体的,就是不要任何的操作,仅仅的为数组开辟了一片空间而已。

二、对象指针:

示例:

#include<iostream>
const int N=100;

using namespace std;

class Date
{
    private:
    int year,month,day;
    public:
    Date();
    Date(int y,int m,int d);
    void show();
};

Date::Date(int y,int m,int d)
{
    year=y;
    month=m;
    day=d;
}

Date::Date()
{}

void Date::show()
{
    cout<<year<<' '<<month<<' '<<day<<endl;
}
int main()
{
    Date date[N];
    int n,y1,m1,d1;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>y1>>m1>>d1;
        date[i-1]=Date(y1,m1,d1);
    }
    Date *p=date;
    while(p!=&date[n])
    {
        p->show();
        p++;
    }
    return 0;
}

Ps:

第一,对象指针和普通的指针很是相似,一般而言,当指针加1或者减1时,它总是指向其基本类型中相邻的一个元素,对象指针也是这样的。

抱歉!评论已关闭.