c++,声明一个学生类Student,设计私有数据成员: 年龄 age; 姓名 name;静态数据成员:学生人数 count; 定义4个公有成员函数:参数带默认值Ɛ, “no”)的构造函数,改变学生姓名的函数setName,获取数据成员函数getAge, getName;定义静态成员函数showCount;定义友元函数:修改学生年龄 changeAge
时间: 2023-06-11 09:06:03 浏览: 143
c++访问私有private成员变量的常用方法
下面是实现上述要求的 C++ 代码:
```c++
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
int age;
string name;
static int count;
public:
Student(int a = 0, string n = "no") {
age = a;
name = n;
count++;
}
void setName(string n) {
name = n;
}
int getAge() {
return age;
}
string getName() {
return name;
}
static void showCount() {
cout << "Total number of students: " << count << endl;
}
friend void changeAge(Student& s, int a);
};
int Student::count = 0;
void changeAge(Student& s, int a) {
s.age = a;
}
int main() {
Student s1(18, "Alice");
Student s2(20, "Bob");
cout << s1.getName() << " is " << s1.getAge() << " years old." << endl;
cout << s2.getName() << " is " << s2.getAge() << " years old." << endl;
s1.setName("Carol");
cout << s1.getName() << " is " << s1.getAge() << " years old." << endl;
changeAge(s2, 22);
cout << s2.getName() << " is " << s2.getAge() << " years old." << endl;
Student::showCount();
return 0;
}
```
在上述代码中,`Student` 类有一个私有数据成员 `age` 和 `name`,分别表示学生的年龄和姓名。`count` 是一个静态数据成员,表示学生的总人数。构造函数在创建对象时初始化 `age` 和 `name`,并将 `count` 加 1。`setName` 函数用于修改学生姓名。`getAge` 和 `getName` 函数分别返回学生的年龄和姓名。`showCount` 是一个静态成员函数,用于输出学生的总人数。`changeAge` 是一个友元函数,用于修改学生的年龄。在 `main` 函数中,我们创建两个 `Student` 对象 `s1` 和 `s2`,并分别输出其姓名和年龄。然后修改 `s1` 的姓名和 `s2` 的年龄,并最后调用 `showCount` 函数输出学生的总人数。
阅读全文