cpp12例01-2基类保护成员在私有派生类中的访问特性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[例1-2] 基类成员在私有派生类中的访问特性
#include <iostream.h>
class Base
{ int x ; //基类私有成员
protected: int y ; //基类保护成员
public:
int z; // 基类公有成员
Base(int a , int b , int c) { x=a; y=b; z=c; }
void Setx(int a) { x=a; } //基类公有成员函数
int Getx() { return x; }
int Gety() { return y; }
};
class Inh:private Base // 私有派生类定义
{int Length , Width;
public:
Inh(int a,int b,int c,int d,int e) : Base(a,b,c)//调用基类构造函数
{ Length=d; Width=e; }
void Show()
{ cout<<”Length=”<<Length<<’\t’<<”Width=”<<’\n’;
cout<<”x=”<<Getx()<<’\t’<<”y=”<<y<<’\t’<<”z=”<<z<<’\n’;
}
//派生类成员函数可以访问基类保护成员y
int Sum() { return(Getx()+y+z+Length+Width); }
}; //派生类成员函数通过基类公有成员访问私有成员x
void main(void)
{ Inh b1(1,2,3,4,5);
b1.Show(); //派生类对象只能访问自己的公有成员
cout<<”Sum=”<<b1.Sum()<<’\n’;
}
由于是私有派生,不能使用下列语句:
cout<<”y=”<<b1.Gety()<<’\t’;
cout<<”z=”<<b1.z<<’\n’;
//派生类对象不能访问基类所有成员
私有派生时基类成员的可见性:
基类成员对其对象的可见性:公有成员可见,其他不可见。

这里保护成员同于私有成员。

基类成员对派生类的可见性:公有成员和保护成员可见,私有成员不可见。

这里保护成员同于公有成员。

基类成员对派生类对象的可见性:所有成员均不可见。

相关文档
最新文档