#include
#include
using namespace std ;
class Course
{
private:
char Num[10];//课程代码
char *Name;//课程名称
int Hour;//课时数
int Credit;//学分数
public:
Course (char *nu, char *na,int h, int c);//带缺省值的构造函数。
Course (Course &c);//拷贝构造函数
~ Course ();//析构函数,释放分配的内存
void set (char *na,int h,int c);//修改课程名称、课时、学分
void display();//输出课程信息(各数据成员的值)
Course operator ++(int);//后置自增的运算符重载,要求课时数加16,学分加1。
} ;
Course :: Course(char *nu=NULL, char *na=NULL,int h=0, int c=0)//带缺省值的构造函数。
{
strcpy(Num,nu) ;
int len=strlen(na) ;
Name=new char[len] ;
strcpy(Name,na) ;
Hour=h ;
Credit=c ;
}
Course :: Course(Course &c)//拷贝构造函数
{
strcpy(Num,c.Num) ;
int len=strlen(c.Name) ;
Name=new char[len] ;
strcpy(Name,c.Name) ;
Hour=c.Hour ;
Credit=c.Credit ;
}
Course :: ~ Course ()//析构函数,释放分配的内存
{
delete []Name ;
}
void Course :: set (char *na,int h,int c)//修改课程名称、课时、学分
{
int len=strlen(na) ;
Name=new char[len] ;
strcpy(Name,na) ;
Hour=h ;
Credit=c ;
}
void Course :: display()//输出课程信息(各数据成员的值)
{
cout<
Course Course :: operator ++(int)//后置自增的运算符重载,要求课时数加16,学分加1。
{
Hour+=16 ;
Credit+=1 ;
return *this ;
}
-------------------------------------------------------------
一点点小问题:
1.我编译的时候Course A("990001", "C++程序设计(上)", 64, 4)不合法,编译器认为不能将"990001"等字符串转化为char *。这是编译器的问题,应该没问题吧。
2.我的头文件里没有