#include<iostream> using namespace std; class Student { private: int age=0; //年龄 string name="NoName"; //姓名 public: static int count; //静态成员,表示学生人数 Student(int a, string); Student() { //age = 0; //name = "NoName"; count++; }; ~Student() {}; void Print(); }; int Student::count = 0;//类外初始化 Student::Student(int a, string n) { this->age = a; this->name = n; } void Student::Print() { cout << "Name=" << this->name << ", " << "age=" << this->age << endl; } int main() { cout << "count=" << Student::count << endl; Student s1, * p = new Student(23, "ZhangHong"); //Student s1; Student *p=new Student(23,"ZhangHong"); s1.Print(); p->Print(); delete p; s1.Print(); Student Stu[4]; cout << "count=" << Student::count << endl; return 0; }
时间: 2024-03-21 21:38:20 浏览: 74
使用include <iostream>时一定要加using namespace std
这段代码定义了一个学生类(Student),其中包含一个表示年龄的私有成员变量(age)、一个表示姓名的私有成员变量(name)和一个表示学生人数的静态成员变量(count)。类中定义了两个构造函数,一个是有参构造函数,另一个是无参构造函数,有参构造函数用于初始化年龄和姓名,无参构造函数用于初始化count,并且将count加1。类中还有一个打印函数Print(),用于输出学生的姓名和年龄。最后在main函数中,通过无参构造函数和有参构造函数创建两个学生对象s1和p,并分别调用Print()函数输出它们的信息,然后通过delete释放指针p所指向的内存,再次调用s1的Print()函数输出它的信息,最后创建一个包含4个学生对象的数组Stu,并输出当前的学生人数count。
该代码的输出结果如下:
```
count=0
Name=NoName, age=0
Name=ZhangHong, age=23
Name=NoName, age=0
count=5
```
可以看到,最初的学生人数count为0,s1的名字和年龄都是默认值,p的名字是“ZhangHong”,年龄是23。释放p所指向的内存后,s1的名字和年龄仍然是默认值。最终,学生人数为5,包括s1、p和Stu数组中的4个学生对象。
阅读全文