今天上课复习了C++里面类的概念和简单实现,做了一个小练习。
按照老师讲的,前面基本都没有出现问题,只是到了后来的静态变量的定义、赋值和修改出现了问题,经过不断试验,才正确调出了程序。。。
细节问题一定要注意,比如:定义static变量为私有,提供公开接口函数访问、修改静态变量。但是初始化只需要在类体外不加static进行赋值即可。
而公有的接口函数则需要在类体内声明,类外实现。声明时用static int get_count(); 类外定义则不需要写static,要直接写反值类型: int date::get_count(){return count;}。
总之就是要把握大方向,然后注意小细节。
具体程序如下:
#include<iostream>
using std::cout;
using std::endl;
//struct date {
class date {
int d,m,y;
// static date default;
static int count;
public:
date();
date(int,int,int);
date(int,int);
// static int count;
/* void init(date& dt,int dd,int mm,int yy)
{ dt.d=dd;
dt.m=mm;
dt.y=yy;
}
void init(date& dt,int dd,int mm,int yy);
*/
int getDay(date& dt){return dt.d;}
int getMonth(date& dt){return dt.m;}
int getYear(date& dt){return dt.y;}
void setDay(date& dt,int dd){dt.d=dd;}
void setMOnth(date& dt,int mm){dt.m=mm;}
void setYear(date& dt,int yy){dt.y=yy;}
// static void set_default(int,int,int);
// static void set_count();
static void inc(){count++;}
static int get_count();
};
int date::count=0;
// static void date::set_count(){count=0;}
int date::get_count(){return count;}
/* void date::init(date& dt,int dd,int mm,int yy )
{ dt.d=dd;
dt.m=mm;
dt.y=yy;
}
*/
date::date(){d=5;m=11;y=2000;inc();}
date::date(int d1,int m1){d=d1;m=m1;y=2022;inc();}
date::date(int d2,int m2,int y2){d=d2;m=m2;y=y2;inc();}
int main()
{ //date today=date(7,24,1989);
date today(7,24,1989);
// today.init(today,5,11,2012);
// today.setYear(today,2002);
cout<<today.getYear(today)<<endl;
cout<<date::get_count()<<endl;
date oo(1,1,2012);
date tt(1,2);
date ff;
cout<<date::get_count()<<endl;
return 0;
}