我们已经知道在C++类中默认的访问权限是private,在C++结构体中默认的访问权限是public
其实在C++中类和结构体没有严格的界限,区别如上。
那么这里说明一下protected权限。
这个protected访问权限只是说明外部调用函数不能直接调用类成员,但是继承类确能够直接访问。
我们知道基类的private成员继承类不能直接调用,必须通过public方法进行调用,
这里又多了一项可以继承类可以通过protected方法进行调用
如下
class normalu
{
private:
string name;
unsigned int id;
char* password;
public:
unsigned int pri;
normalu(string username,unsigned int uid,unsigned int upri,const char* upass):name(username),id(uid),pri(upri)
{
password = new char[strlen(upass)+1];
strcpy(password,upass);
}
normalu(const normalu& innor);
virtual ~normalu();
void show()
{
cout<<"name:"<<name<<endl;
cout<<"id:"<<id<<endl;
}
virtual void checkpri(void)
{
if(pri>5)
{
cout<<"User Is Normal User!\n";
show();
exit(0);
}
else
{
cout<<"User Is Not Normal User!\n";
show();
cout<<"User Is Only register user!\n";
}
}
};
我们可以修改一下
class normalu
{
private:
string name;
unsigned int id;
char* password;
protected: //将pri和show()函数作为保护权限成员保证外部不能调用更加合适
unsigned int pri;
void show()
{
cout<<"name:"<<name<<endl;
cout<<"id:"<<id<<endl;
}
public:
normalu(string username,unsigned int uid,unsigned int upri,const char* upass):name(username),id(uid),pri(upri)
{
password = new char[strlen(upass)+1];
strcpy(password,upass);
}
normalu(const normalu& innor);
virtual ~normalu();
virtual void checkpri(void)
{
if(pri>5)
{
cout<<"User Is Normal User!\n";
show();
exit(0);
}
else
{
cout<<"User Is Not Normal User!\n";
show();
cout<<"User Is Only register user!\n";
}
}
};
将pri和show()函数作为保护权限成员保证外部不能调用更加合适。
在没有其他什么需要说明的了
其实在C++中类和结构体没有严格的界限,区别如上。
那么这里说明一下protected权限。
这个protected访问权限只是说明外部调用函数不能直接调用类成员,但是继承类确能够直接访问。
我们知道基类的private成员继承类不能直接调用,必须通过public方法进行调用,
这里又多了一项可以继承类可以通过protected方法进行调用
如下
class normalu
{
private:
string name;
unsigned int id;
char* password;
public:
unsigned int pri;
normalu(string username,unsigned int uid,unsigned int upri,const char* upass):name(username),id(uid),pri(upri)
{
password = new char[strlen(upass)+1];
strcpy(password,upass);
}
normalu(const normalu& innor);
virtual ~normalu();
void show()
{
cout<<"name:"<<name<<endl;
cout<<"id:"<<id<<endl;
}
virtual void checkpri(void)
{
if(pri>5)
{
cout<<"User Is Normal User!\n";
show();
exit(0);
}
else
{
cout<<"User Is Not Normal User!\n";
show();
cout<<"User Is Only register user!\n";
}
}
};
我们可以修改一下
class normalu
{
private:
string name;
unsigned int id;
char* password;
protected: //将pri和show()函数作为保护权限成员保证外部不能调用更加合适
unsigned int pri;
void show()
{
cout<<"name:"<<name<<endl;
cout<<"id:"<<id<<endl;
}
public:
normalu(string username,unsigned int uid,unsigned int upri,const char* upass):name(username),id(uid),pri(upri)
{
password = new char[strlen(upass)+1];
strcpy(password,upass);
}
normalu(const normalu& innor);
virtual ~normalu();
virtual void checkpri(void)
{
if(pri>5)
{
cout<<"User Is Normal User!\n";
show();
exit(0);
}
else
{
cout<<"User Is Not Normal User!\n";
show();
cout<<"User Is Only register user!\n";
}
}
};
将pri和show()函数作为保护权限成员保证外部不能调用更加合适。
在没有其他什么需要说明的了