#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 14:38:20 浏览: 80
这段代码定义了一个学生类(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个学生对象。
相关问题
#include <iostream> using namespace std; #include <iostream> #include <cstring> using namespace std; class Student { /********* Begin *********/ //在此处声明Student类 private: int age; string name; public: Student(int m,string n); Student( ); void SetInfo(int m,string n); int getAge(); string getName(); /********* End *********/ }; /********* Begin *********/ //在此处定义Student类 Student::Student(int m,string n) { age=m; name=n; } Student::Student( ) { age=0; name="No"; } void Student::SetInfo(int m,string n) { age=m; name=n; } int Student::getAge() { return age; } string Student::getName() { return name; } /********* End *********/
这是一个简单的 C++ 程序,定义了一个名为 Student 的类。类中有两个私有成员变量 age 和 name,以及四个公有成员函数:构造函数 Student(int m, string n)、无参构造函数 Student()、SetInfo(int m, string n) 和 getAge()、getName()。构造函数用于初始化对象,无参构造函数默认初始化 age 为 0,name 为 "No"。SetInfo() 函数用于设置学生的信息,包括年龄和姓名。getAge() 和 getName() 函数分别用于获取学生的年龄和姓名。
用C++ 虛基类 声明一个人员类(Person): 保护数据成员:string name; //姓名 char sex; //性别 int age; //年龄 公有成员西数:Teacher(string n, char s, inta):/构造函数 声明一个教师类(Teacher):公有继承人员类(Person),井声明Person为虚基类保护数据成员:string title; //职称 公有成员函数:Teacher(string n, char s, int a, string t);1构造函数 声明一个学生类(Student):公有继承人员类(Person),并声明Person为虚基类保护数据成员:1oat score;1/成绩 公有成员函数:Student(string n, chars, int a, nloat c):/构造函数 声明一个在职研究生(Graduate), 公有继承教师类(Teacher)和学生类(Student 私有数据成员:noat wage; //工资 公有成员西数:Graduate (string n, char s, int a, string t, float c, float w):/构造西数void showO;1/输出研究生的有关数据(姓名、性别、年龄、职称、成绩、工资) 编写一个程序测试该类,测试数据及要求如下: 主函数中定义在职研究生类对象:Graduate g('LiMing',’f,24,“助教:,89.5,3000); 本程序的执行结果如下: name: LiMing sex: f age:24 title:助教 score: 89.5 wage: 3000
以下是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Person {
protected:
string name;
char sex;
int age;
public:
Person(string n, char s, int a): name(n), sex(s), age(a) {}
};
class Teacher : virtual public Person {
protected:
string title;
public:
Teacher(string n, char s, int a, string t): Person(n, s, a), title(t) {}
};
class Student : virtual public Person {
protected:
float score;
public:
Student(string n, char s, int a, float c): Person(n, s, a), score(c) {}
};
class Graduate : public Teacher, public Student {
private:
float wage;
public:
Graduate(string n, char s, int a, string t, float c, float w): Person(n, s, a), Teacher(n, s, a, t), Student(n, s, a, c), wage(w) {}
void show() {
cout << "name: " << name << endl;
cout << "sex: " << sex << endl;
cout << "age: " << age << endl;
cout << "title: " << title << endl;
cout << "score: " << score << endl;
cout << "wage: " << wage << endl;
}
};
int main() {
Graduate g("LiMing", 'f', 24, "助教", 89.5, 3000);
g.show();
return 0;
}
```
执行结果为:
```
name: LiMing
sex: f
age: 24
title: 助教
score: 89.5
wage: 3000
```
阅读全文