公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。
1.公有继承(public)
公有继承的特点是基类中的公有成员与保护成员在派生类中的属性仍保持原状态,即原来是公有成员(保护成员)在派生类中仍是公有成员(保护成员),在该派生类派生出去的子类中可见。而私有成员在派生类中则不可见,以后派生出去的子类中更是不可见。
class A{
int a1;
public:
A(int a,int b,int c){
a1 = a,a2=b,a3=c;
}
int a2;
protected:
int a3;
};
class B:public A{
public:
B():A(1,2,3){}
void show(){
printf("a2=%d a3=%d\n",a2,a3);
}
};*/a1不可被访问,a2,a3保持原来的状态,即a2可以在类外被修改,而a3不可以。
此时a2,a3相当于B类的公有成员与保护成员。*/
2.私有继承(private)
私有继承的特点是基类中的公有成员与保护成员在派生类中的属性变为私有状态,即基类中的公有成员与保护成员在派生类中一律变成了私有成员,在派生类中可见,在派生类派生出去的子类中不可见。
class A{
int a1;
public:
A(int a,int b,int c){
a1 = a,a2=b,a3=c;
}
int a2;
protected:
int a3;
};
class B:A{
public:
B():A(1,2,3){}
void show(){
printf("a2=%d a3=%d\n",a2,a3);
}
};//a2,a3属性变成私有成员,在类外与派生后中均不可见。
3. 保护继承(protected)
保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,只在该派生后的子类中与友元函数中可见。