一、protected
· 访问范围: 公有成员>保护成员>私有成员
· 表现形式: 能访问私有成员的方式都能访问保护成员,基类的保护成员可以在派生类的成员函数中被访问
//基类
class Student {
string name;
protected:
int ID;
void ShowName() {
cout << "Name\t" << Student::name << endl; }
public:
Student(string n, int id) :name(n), ID(id) {
}
};
//派生类
class Person :public Student {
public:
Person(string n, int id):Student(n, id) {
}
void show() {
//cout << "Name\t" << Student::name << endl;//错误 name是私有成员
ShowName();
cout << "ID\t" << Student::ID << endl;
}
};
二、static
1. 静态成员变量
· 必须在类外使用 数据类型 类名::静态变量名; 定义
· 若定义在类的public域,类外可以访问它
2. 静态成员函数
· 静态成员函数只能访问静态成员变量
class MyClass{
int x;
static int y;
public:
static int z;
void show(){
cout<<"x\t"<<x<<endl;
//非静态成员函数可以访问静态成员变量
cout<<"y\t"<<y<<endl;
cout<<"z\t"<<z<<endl;
}
static void s_show(</