【继承】讲解

访问控制

传递下去可以一共分为四个特性

  1. 公有
  2. 保护
  3. 私有
  4. 存在但不可见
    虽然它们各自的特性不同,能不能使用也另说,但是在建立类对象的时候,系统都会申请相应的内存,也就是说,无论它们能不能用,它们都存在。

公有继承

在这里插入图片描述

  1. 基类的私有数据成员存在但在派生类里不可见
    即不可直接使用:
    在这里插入图片描述
    在这里插入图片描述
    但可以间接利用公有成员函数访问:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

私有继承

在这里插入图片描述

  1. 基类的公有和保护变为派生类的私有,可以在派生里边直接用,但不能在主函数里边用,就和派生类原有的私有数据成员同样的特性。基类的私有在派生类里边存在但不可见,但是可以和上面的方法一样用函数间接使用。
    在这里插入图片描述

保护继承

  1. 保护数据成员是专门为基类和派生类之间的层次关系准备的,对外界来说,它和私有数据成员没什么区别。
    在基类与派生类之间调用保护类数据成员时,保护类数据成员和公有数据成员用法无异;但在主函数里,保护类数据成员不可见,而公有类数据成员可见,二者有异。
    在这里插入图片描述

重名成员(不难,随便看看就ok)

屏蔽和访问

1.重名数据成员

class  base
  {
    public :
           int  a ,  b ;  
  } ;
class  derived : public  base
  {
    public :  
         int  b ,  c ; 
  } ;
void  f ()
{
    derived  d ;
   d . a = 1 ;
   d . base :: b = 2 ;//作用域控制符访问
   d . b = 3 ;
   d . c = 4 ;
};

2.重名成员函数

#include<iostream.h>
class A
{
    public:	  
       int a1, a2 ;
      A( int i1=0, int i2=0 ) {
    a1 = i1; a2 = i2; }
      void print() 
         {
    cout << "a1=" << a1 << '\t' << "a2=" << a2 << endl ; }
};
class B : public A
{
    public:	
       int b1, b2 ;
       B( int j1=1, int j2=1 ) {
    b1 = j1; b2 = j2; }
       void print()		//定义同名函数
         {
    cout << "b1=" << b1 << '\t' << "b2=" << b2 << endl ; }
      void printAB()
        {
    A::print() ;		//派生类对象调用基类版本同名成员函数
           print() ;		//派生类对象调用自身的成员函数
       }
};
void main()
{
    B  b ;        b.A::print();	b.printAB();  }

继承过程中的静态成员

记住共享,无论是基类还是派生类只要它们的数据成员的名字相同,它们的数据成员的大小的改变就是同时的,数据是共享的,尽管不是同一个类里面的数据成员

#include<iostream>
using namespace std;
class B
{
   
public:
    static void Add() {
    i++; }
    //静态成员函数的功能主要是改变静态数据成员的大小
    static int i;//静态数据成员
    void out() {
    cout << "static i=" << i << endl; }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如果树上有叶子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值