用c++写一个职员类,要求私有数据char* 定义名字,int定义年龄,构造函数键盘输入名字和年龄,不能使用string
时间: 2024-02-13 20:59:58 浏览: 25
好的,根据您的要求,我为您编写了一个职员类的代码,如下所示:
```c++
#include <iostream>
#include <cstring>
class Staff {
private:
char* name;
int age;
public:
Staff() {
name = new char[1];
name[0] = '\0';
age = 0;
}
Staff(const char* n, int a) {
name = new char[strlen(n) + 1];
strcpy(name, n);
age = a;
}
~Staff() {
delete[] name;
}
void setName(const char* n) {
if (name != nullptr) {
delete[] name;
name = nullptr;
}
name = new char[strlen(n) + 1];
strcpy(name, n);
}
void setAge(int a) {
age = a;
}
char* getName() const {
return name;
}
int getAge() const {
return age;
}
};
int main() {
char* name = new char[20];
int age;
std::cout << "请输入姓名:";
std::cin >> name;
std::cout << "请输入年龄:";
std::cin >> age;
Staff staff(name, age);
std::cout << "姓名:" << staff.getName() << std::endl;
std::cout << "年龄:" << staff.getAge() << std::endl;
delete[] name;
return 0;
}
```
在这个代码中,我们定义了一个职员类 Staff,其中私有数据成员包括 char* 类型的 name 和 int 类型的 age。构造函数 Staff() 和 Staff(const char* n, int a) 分别用来初始化 name 和 age 的值。setName() 和 setAge() 分别用来设置 name 和 age 的值。getName() 和 getAge() 分别用来获取 name 和 age 的值。在 main() 函数中,我们通过键盘输入来初始化对象 staff 的值,并输出其姓名和年龄。
需要注意的是,在这个代码中,我们使用了 char* 类型来定义 name,而没有使用 string 类型,这是根据您的要求编写的。同时,我们还需要手动管理动态分配的内存,在析构函数 ~Staff() 中释放 name 所占用的内存。