一、对象数组:每一个数组元素都是对象的数组。
示例:
#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时,它总是指向其基本类型中相邻的一个元素,对象指针也是这样的。