派生类从基类公有继承时,派生类的成员函数可以直接访问基类的公有成员,但不能访问基类的私有成员。因此,为了便于派生类的访问,可以将基类的私有成员中需要提供给派生类访问的成员定义为保护成员,说白了就一句话,派生类可以访问protected权限的成员但是派生类的对象不能访问基类的成员。
下面是一个实例:
#include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
class Base{
//定义一个protected权限的变量供派生类使用
protected :
int b;
public:
Base(int i){
b=i;
}
void Print(){
cout<<"b="<<b<<endl;
}
};
class Deveried:public Base{
private:
int d;
public:
Deveried(int i,int j);
void Print(){
cout<<"b="<<b<<"\t"<<"d="<<d<<endl;
}
};
//此处可以初始化protected权限的成员
Deveried::Deveried(int i,int j):Base(i){
d = j;
}
int main(int argc, char** argv) {
Base b(5);
Deveried d(4,5);
b.Print();
d.Print();
//d.b; //注意这句话编译时会出错派生类的对象不能访问基类的protected权限的变量,想要访问必须改成public权限的
return 0;
}