今天上午上了C++课,复习了上次的类定义,以及类的成员函数,数据成员等,还增加了新的东西。
为了让程序能够尽可能分成模块,便于修改,将整个程序分开,变成多个小程序,分为头文件,实现文件,还有主程序文件。
还加入了赋值构造函数,析构函数。以及运算法的重载。编写一个类,其实就是定义了一个用户的数据结构。要根据这个数据结构所需要的操作对他进行完善,所以有必要对某些运算符进行重载。这就是前面学习到的运算符重载的问题了。
以下是分开的代码:
date.h
#ifndef DATE_H
#define DATE_H
using std::cout;
using std::endl;
//struct date {
class date {
int d,m,y;
// static date default;
static int count;
date* p;
public:
date();
date(int,int,int);
date(int,int);
// static int count;
//to add a copy constructor
date(const date&);
~date(){cout<<"delete dtor..."<<endl; delete p;}
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();
};
#endif
date.cc
#include<iostream>
#include"date.h"
int date::count=0;
int date::get_count(){return count;
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();}
date::date(const date& ddd)
{ cout<<"now is in the copy ctor..."<<endl;
d=ddd.d;m=ddd.m;y=ddd.y;
}
datemain.cc:
#include<iostream>
#include"date.cc"
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;
// date d2(oo);
date d2;
d2=oo;
cout<<date::get_count()<<endl;
return 0;
}
晚上还看了图的知识。存储方式,数据结构,以及一些最短路径的算法。
竟然看到了经典的Dijkstra算法,膜拜啊。看了个大概明白。发现还是想法比较重要,只要你能想到,就没有什么解决不了的麻烦。发散性思维啊。敢想敢做。不要对自己没有信心,一上来就说做不出来。可以先构造模型,一点一点简化问题。