类内部的封装性

1。类本身提供了与外界隔离,数据保护,封装性
      即除了成员函数,程序并无法对于其私有成员进行访问,修改
2。在引入继承层次之后,在派生类的内部(它含有一个 基类对象组成部分,之所以叫 组成部分,因为它不独         立,之所以叫它 部分因为它本身又维护了一个小范围的封装性,数据保护
3。派生类继承了基类的所有成员,即使基类的私有成员,也是派生类对象的构成之一,实例化对象的时候,分      配内存,占据空间

class B
{
public:
    B(){b = 3;}
    void fb(){b = 33;}
    void display(){cout << "B_b: " << b << endl;}
private:
    int b;
};

class D:public B
{
public:
    D():B(), d(10){}
    void fd(){d = 100;}
    void display(){B::display(); cout << "D_d: " << d << endl;}
private:
    int d;
    int e;
};

int main()
{
    D d;
    d.display();
    cout << sizeof(d) << endl;
    return 0;
}

例程说明两个问题:
1。a在D对象d中占据内存,验证派生类继承了基类的所有成员,因为B未实例化对象,未创建B的对象,但是a确实在内存中存在了,可见a是D对象d的一部分,从而获得内存
2。理解 类体内的封装性
分析d对象的成员
(1)成员函数有
          来自基类的:fb()
          自身的:fd()
(2)数据成员有
          来自基类的:a
          自身的:d,e
3。体现 局部封装性的地方:(public继承情形)
      自身《=访问=》自身
      来自基类《=访问=》来自基类
      一一相对,分工明确
(1)对于一般的类(不处于类继承体系中的类)
          它的成员函数可以访问它的所有的成员(数据成员+成员函数),
          因为成员函数全部自身的,其它被访问成员也都是自身的,所以对得上
(2)对于派生类(处于类继承体系中的类)
          它的成员函数分成两个部分:来自基类的+自身的
          它的其他成员(数据成员+成员函数)也分成了两个部分:来自基类的+自身
          一个完整对象(不独立):基类对象 = 来自基类的成员函数+来自基类的数据成员
         
访问那些来自的基类的数据成员,必需使用来自的基类的成员函数,虽然宏观上都属于派生类的成员函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值