class Student { private: int Id, score; char name[9]; public: Student(int id = 10000, const char* n = NULL, int s = 0); int GetId() const; const char* GetName() const; int GetScore() const; void Set(int id = 99999, const char* n = "NONAME", int s = 100); void Show() const; }; Student::Student( int id,const char* n,int s ) { Id=id; score=s; strcpy(name,n); } int Student::GetId() const { return Id; } int Student::GetScore() const { return score; } const char* Student::GetName() const { return name; } void Student::Set( int id,const char* n,int s ) { Id=id; score=s; strcpy(name,n); } void Student::Show() const { cout<<Id<<"-"<<name<<"-"<<score<<endl;}这段代码有何问题
时间: 2024-04-01 13:37:17 浏览: 74
实验二:面向对象C++程序设计.docx
这段代码没有明显的语法错误,但是存在一些潜在问题:
1. char数组name[9]可能无法容纳超过8个字符的字符串,如果传入的n参数长度大于8,会出现问题。
2. 在构造函数中,如果传入的n为NULL指针,会导致strcpy函数出错。
3. 在Set函数中,如果传入的n为NULL指针,会导致strcpy函数出错。
4. 在Show函数中,没有考虑name中存在空格的情况,输出可能会出现问题。
5. 没有对传入的id和score进行有效范围的检查,可能会出现不合法的值。
阅读全文