完善Person类:构造、拷贝构造与析构

需积分: 6 0 下载量 144 浏览量 更新于2024-09-10 收藏 68KB DOC 举报
在本题中,你需要为`Person`类编写相关的构造函数、拷贝构造函数以及析构函数,以支持人员类的实例化、对象间的复制以及内存管理。题目给出的描述明确指出了以下几个关键知识点: 1. **类定义**: `class Person` 定义了一个名为`Person`的类,其中包含两个私有成员变量:`char* name` 和 `int age`。这两个变量分别用于存储人员的姓名和年龄。 2. **构造函数**: - `Person(char* Name, int Age);`: 这是默认构造函数,接受一个字符串参数`Name`和一个整数参数`Age`,用于初始化`name`和`age`。在构造函数中,你需要动态分配内存来存储姓名,并使用`strcpy`函数将`Name`复制到`name`中,同时设置`age`的值。 - `Person(const Person& p);`: 拷贝构造函数,接收一个`Person`类型的引用`p`作为参数。它的目的是创建一个新的`Person`对象,其`name`和`age`属性与给定的对象`p`相同。同样需要动态分配内存并进行相应的复制操作。 3. **析构函数**: `~Person()`: 在对象不再被使用时自动调用,用于释放先前动态分配的内存。这里你需要确保在析构函数中调用`delete[] name`以防止内存泄漏。 4. **成员方法**: - `void setAge(int x)`: 用于更新`age`的值。 - `void print() const;`: 一个常量成员函数,用于打印人员的信息。在实现时,可能需要显示姓名和年龄。 5. **输入输出示例**: 题目给出了输入和输出样例,说明如何通过调用构造函数、拷贝构造函数和析构函数来操作`Person`对象。例如,当执行拷贝构造函数后,会打印"TheAddressofname:bree",表示对象的`name`地址被正确复制。 6. **内存限制**: 时间限制为1秒,内存限制为128MB,这提示你需要注意代码的效率,特别是内存分配和释放部分。 根据这些信息,你需要编写完整的类定义,并确保拷贝构造函数和析构函数能够正确地工作,以满足题目中的功能要求。同时,注意避免内存泄漏问题,因为`Person`类中使用了动态内存分配。在完成这些任务后,记得检查提交代码是否能在给定的时间和内存限制内正确运行,以及能否通过98个已解决的测试用例。