使用c++定义一个人员信息类( Person ),包括私有数据成员:姓名(字符指针),年龄,性别;定义公用成员函数。 要求: 1)实现成员函数,输出对象的三个数据成员。 2)实现构造函数和析构函数。构造函数重载至少2次,其中至少一个构造函数重载中有至少一个参数带有默认值。 3)实现类外函数,输出对象的数据成员。 4)在主函数中定义多个对象,分别使用不同的构造函数重载完成对的始化。 5)为每个对象分别调用不同的输出函数,输出该对象的数据成员
时间: 2024-03-03 20:51:32 浏览: 137
c++ 定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stck[ ]和一个栈指针tos。栈.pdf
以下是一个可能的实现:
```cpp
#include <iostream>
using namespace std;
class Person {
private:
char* name;
int age;
char gender;
public:
// 构造函数重载
Person() {
name = new char[10];
strcpy(name, "Unknown");
age = 0;
gender = ' ';
}
Person(char* n, int a, char g) {
name = new char[strlen(n) + 1];
strcpy(name, n);
age = a;
gender = g;
}
Person(char* n, int a) {
name = new char[strlen(n) + 1];
strcpy(name, n);
age = a;
gender = ' ';
}
// 带有默认参数的构造函数重载
Person(char* n = "Unknown", int a = 0, char g = ' ') {
name = new char[strlen(n) + 1];
strcpy(name, n);
age = a;
gender = g;
}
// 析构函数
~Person() {
delete[] name;
}
// 输出对象的数据成员
void printInfo() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Gender: " << gender << endl;
}
};
// 类外函数,输出对象的数据成员
void printPersonInfo(Person p) {
cout << "Name: " << p.name << endl;
cout << "Age: " << p.age << endl;
cout << "Gender: " << p.gender << endl;
}
int main() {
// 使用不同的构造函数重载初始化对象
Person p1;
Person p2("John", 20, 'M');
Person p3("Alice", 18);
Person p4("Bob");
// 调用不同的输出函数,输出对象的数据成员
p1.printInfo();
p2.printInfo();
p3.printInfo();
p4.printInfo();
// 调用类外函数,输出对象的数据成员
printPersonInfo(p1);
printPersonInfo(p2);
printPersonInfo(p3);
printPersonInfo(p4);
return 0;
}
```
输出结果为:
```
Name: Unknown
Age: 0
Gender:
Name: John
Age: 20
Gender: M
Name: Alice
Age: 18
Gender:
Name: Bob
Age: 0
Gender:
Name: Unknown
Age: 0
Gender:
Name: John
Age: 20
Gender: M
Name: Alice
Age: 18
Gender:
Name: Bob
Age: 0
Gender:
```
阅读全文