关于C++的一个简单的题目,急求

2025-06-22 16:08:07
推荐回答(1个)
回答1:

#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< cout< cout< cout<}

Course Course :: operator ++(int)//后置自增的运算符重载,要求课时数加16,学分加1。
{
Hour+=16 ;
Credit+=1 ;
return *this ;
}

-------------------------------------------------------------

一点点小问题:
1.我编译的时候Course A("990001", "C++程序设计(上)", 64, 4)不合法,编译器认为不能将"990001"等字符串转化为char *。这是编译器的问题,应该没问题吧。
2.我的头文件里没有只有。这是C++版本的问题,请放心使用