C++定义一个简单的类 Person ,包含姓名、年龄、学号等私有成员变量,并提供相应的公有成员函数来访问和修改这些私有成员。编写一个主函数,通过创建对象、复制对象和赋值操作来验证构造函数和析构函数的执行次序。
时间: 2024-10-25 20:17:47 浏览: 34
建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。
4星 · 用户满意度95%
在C++中,我们可以定义一个名为`Person`的简单类,它包含私有数据成员如姓名(name)、年龄(age)和学号(studentID),并提供公有的访问器(setters)和修改器(getters)方法。同时,为了演示构造函数和析构函数的执行顺序,我们会使用默认构造函数和拷贝构造函数以及赋值运算符。
```cpp
// 定义Person类
class Person {
private:
std::string name;
int age;
std::string studentID;
public:
// 构造函数
Person(const std::string& n = "", int a = 0, const std::string& s = "") : name(n), age(a), studentID(s) {}
// 公有成员函数
void setName(const std::string& newName) { name = newName; }
std::string getName() const { return name; }
void setAge(int newAge) { age = newAge; }
int getAge() const { return age; }
void setStudentID(const std::string& newStudentID) { studentID = newStudentID; }
std::string getStudentID() const { return studentID; }
// 析构函数 (默认的)
~Person() {}
};
// 主函数
int main() {
// 创建第一个对象
Person p1("Alice", 20, "123456");
// 打印初始状态
std::cout << "Object 1: Name - " << p1.getName() << ", Age - " << p1.getAge() << ", Student ID - " << p1.getStudentID() << '\n';
// 拷贝构造函数示例
Person p2(p1); // 这里会先调用p1的复制构造函数
// 打印拷贝后的状态
std::cout << "Object 2: Name - " << p2.getName() << ", Age - " << p2.getAge() << ", Student ID - " << p2.getStudentID() << '\n';
// 赋值操作
p1.setName("Bob");
p1.setAge(21);
p1.setStudentID("789012");
// 打印赋值后的状态
std::cout << "After assignment to object 1: Name - " << p1.getName() << ", Age - " << p1.getAge() << ", Student ID - " << p1.getStudentID() << '\n';
// 再次打印对象2的状态(由于赋值操作,对象2的属性应与对象1一致)
std::cout << "Object 2: Name - " << p2.getName() << ", Age - " << p2.getAge() << ", Student ID - " << p2.getStudentID() << '\n';
return 0;
}
```
在这个例子中,当你运行`main`函数时,会首先创建`p1`对象,然后创建`p2`对象,这个过程中会调用`p1`的复制构造函数。接着,通过赋值操作更新`p1`的属性,这将不会影响`p2`(因为它有自己的独立副本)。当程序结束时,`~Person()`析构函数会被自动调用来释放`p1`和`p2`所占用的内存资源。
阅读全文