定义一个学生类Student,含有数据成员:学号和姓名、学生人数(静态),并将数据私有化;
时间: 2024-04-29 13:24:39 浏览: 223
好的,你的要求是定义一个学生类Student,包含学号、姓名和学生人数这三个私有数据成员。我可以为你提供以下代码:
```
class Student{
private:
string id; // 学号
string name; // 姓名
static int count; // 学生人数
public:
Student(string id, string name){
this->id = id;
this->name = name;
count++;
}
string getID() const{
return id;
}
string getName() const{
return name;
}
static int getCount(){
return count;
}
};
int Student::count = 0;
```
这是一个比较简单的学生类,它包含了一个构造函数用于初始化学号和姓名,一个静态的计数器用于记录学生人数,以及三个公有的成员函数用于访问数据成员。需要注意的是,私有的数据成员不能直接从外部访问。
相关问题
c++编写程序【问题描述】定义并实现一个学生类(Student),类中的数据成员有:学生姓名、学生学号、人数和班级号。至少有一个公有成员函数(PrintStuInfo)。PrintStuInfo负责将相关信息输出。在类中定义静态数据成员,记录当前学生人数。在类中定义常数据成员,记录班级号,假设比较号为1001。添加一个友元函数,可对学生类中的私有数据成员进行访问。假设1001班的初始学生人数为45人。在主程序中测试新加入2个学生,并分别通过成员函数和友元函数输出输出2个学生的信息及班级总人数。 掌握静态数据成员、常数据成员和静态成员函数、常成员函数的基本使用方法。 理解友元和友元函数的作用,掌握其使用方法。 【输入形式】新加入班级的学生姓名 【输出形式】加入学生的信息及班级总人数。 【样例输入】 张三 王五 【样例输出】 名字:张三 学号:1 班级:1001 班级人数:47 名字:王五 学号:2 班级:1001 班级人数:47
以下是对应的C++程序实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string name;
int id;
static int num;
const int class_id = 1001;
public:
Student(string n) {
name = n;
id = ++num; // 每新建一个对象,id就自增1
}
void PrintStuInfo() const {
cout << "Name: " << name << endl;
cout << "ID: " << id << endl;
cout << "Class ID: " << class_id << endl;
cout << "Class size: " << num << endl;
}
friend void PrintStuInfoByFriend(Student s); // 声明友元函数
static int GetNum() { // 静态成员函数,用于获取学生人数
return num;
}
};
int Student::num = 45; // 静态数据成员初始化
void PrintStuInfoByFriend(Student s) {
cout << "Name: " << s.name << endl;
cout << "ID: " << s.id << endl;
cout << "Class ID: " << s.class_id << endl;
cout << "Class size: " << s.num << endl;
}
int main() {
string name1, name2;
cout << "Please input the name of the first student: ";
cin >> name1;
cout << "Please input the name of the second student: ";
cin >> name2;
Student s1(name1);
Student s2(name2);
s1.PrintStuInfo(); // 调用成员函数输出学生信息
s2.PrintStuInfo(); // 调用成员函数输出学生信息
cout << "Class size: " << Student::GetNum() << endl; // 通过静态成员函数输出学生人数
PrintStuInfoByFriend(s1); // 调用友元函数输出学生信息
PrintStuInfoByFriend(s2); // 调用友元函数输出学生信息
cout << "Class size: " << Student::GetNum() << endl; // 通过静态成员函数输出学生人数
return 0;
}
```
程序中,我们定义了一个名为 `Student` 的类,它有四个数据成员:学生姓名 `name`、学生学号 `id`、班级人数 `num` 和班级号 `class_id`。其中,`num` 是一个静态数据成员,用于记录当前学生人数;`class_id` 是一个常数据成员,用于记录班级号,其值为1001。在类的定义中,我们声明了一个成员函数 `PrintStuInfo`,用于输出学生信息;同时,我们还声明了一个友元函数 `PrintStuInfoByFriend`,用于对学生类中的私有数据成员进行访问。在 `main` 函数中,我们按照要求输入了两个学生的姓名,然后分别创建了两个 `Student` 对象。我们分别调用了两个对象的成员函数 `PrintStuInfo` 输出学生信息,并使用了静态成员函数 `GetNum` 输出学生人数。最后,我们还通过调用友元函数 `PrintStuInfoByFriend` 输出了两个学生的信息,并再次使用了静态成员函数 `GetNum` 输出学生人数。需要注意的是,我们在类的定义中将 `PrintStuInfoByFriend` 声明为了友元函数,因为该函数需要访问学生类的私有数据成员。
c++定义并实现一个学生类(Student),类中的数据成员有:学生姓名、学生学号、人数和班级号。至少有一个公有成员函数(PrintStuInfo)。PrintStuInfo负责将相关信息输出。在类中定义静态数据成员,记录当前学生人数。在类中定义常数据成员,记录班级号,假设比较号为1001。添加一个友元函数,可对学生类中的私有数据成员进行访问。假设1001班的初始学生人数为45人。在主程序中测试新加入2个学生,并分别通过成员函数和友元函数输出输出2个学生的信息及班级总人数。
以下是代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string name; // 姓名
int id; // 学号
static int num; // 学生人数
const int cls_id; // 班级号
public:
Student(string n, int i): name(n), id(i), cls_id(1001) { num++; } // 构造函数
static int getNum() { return num; } // 静态成员函数
void PrintStuInfo() // 成员函数
{
cout << "姓名:" << name << endl;
cout << "学号:" << id << endl;
cout << "班级号:" << cls_id << endl;
}
friend void PrintStuInfoByFriend(Student stu); // 友元函数
};
int Student::num = 0; // 静态数据成员初始化
void PrintStuInfoByFriend(Student stu)
{
cout << "姓名:" << stu.name << endl;
cout << "学号:" << stu.id << endl;
cout << "班级号:" << stu.cls_id << endl;
}
int main()
{
Student stu1("张三", 10001);
Student stu2("李四", 10002);
cout << "学生人数:" << Student::getNum() << endl;
cout << "通过成员函数输出:" << endl;
stu1.PrintStuInfo();
stu2.PrintStuInfo();
cout << "通过友元函数输出:" << endl;
PrintStuInfoByFriend(stu1);
PrintStuInfoByFriend(stu2);
return 0;
}
```
输出结果为:
```
学生人数:2
通过成员函数输出:
姓名:张三
学号:10001
班级号:1001
姓名:李四
学号:10002
班级号:1001
通过友元函数输出:
姓名:张三
学号:10001
班级号:1001
姓名:李四
学号:10002
班级号:1001
```
阅读全文