在类里面我在protected下定义了一个s_num,在public下写了showmenu为什么在类之外还是可以调用showmenu,里面的s_name不受protected控制吗
#include
using namespace std;
double pi = 3.14;
class student
{
public:
//属性
string s_name;
protected:
int s_num;
//行为
public:
void showmenu()
{
cout << "学生姓名 " << s_name << " 学生学号 " << s_num;
}
}
public就是谁都可以访问,protected只能子类可以访问,外部类不能访问。showmenu是类函数,当然可以访问类里面任何的成员变量了。showmenu是public函数,所以外面是可以直接调用的
public:公有的,说明声明在public后面的成员所有人都是可以使用的,比如一个公有成员变量可以直接使用该类的对象"."出来这个成员,如果这个成员是protected和private都需要通过public的函数来访问这个成员。
protected:受保护的,类内和子类可直接访问,也就是说,基类中有protected成员,子类继承于基类,那么也可以访问基类的protected成员,要是基类是private成员,则对于子类也是隐藏的,不可访问。