定义一个学生 类stu,要求里面有学号,姓名《字符指针类型》2种数据成员,要求写如下成员函数:枸造函数,拷贝构造函酸,析构函出:显不幽数。仕士程序中正义stu的50个数组兀素的数组对象,测试上面的类
时间: 2023-07-15 15:15:14 浏览: 122
以下是符合要求的 `stu` 类的定义和实现:
```cpp
#include <iostream>
#include <cstring>
class stu {
public:
// 构造函数
stu(const char* id = "", const char* name = "") {
id_ = new char[strlen(id) + 1];
strcpy(id_, id);
name_ = new char[strlen(name) + 1];
strcpy(name_, name);
}
// 拷贝构造函数
stu(const stu& other) {
id_ = new char[strlen(other.id_) + 1];
strcpy(id_, other.id_);
name_ = new char[strlen(other.name_) + 1];
strcpy(name_, other.name_);
}
// 析构函数
~stu() {
delete[] id_;
delete[] name_;
}
// 显示学生信息
void display() const {
std::cout << "id: " << id_ << ", name: " << name_ << std::endl;
}
private:
char* id_;
char* name_;
};
```
在主程序中,可以创建一个长度为 50 的 `stu` 类型数组对象,并且测试其构造函数、拷贝构造函数和析构函数的正确性,示例如下:
```cpp
int main() {
stu stus[50];
// 测试构造函数
stu s1("001", "Alice");
s1.display(); // id: 001, name: Alice
// 测试拷贝构造函数
stu s2(s1);
s2.display(); // id: 001, name: Alice
return 0;
}
```