第十一章[1]:派生类的使用

本文探讨了C++中的派生类及其使用,特别是保护继承的方式。通过一个代码示例展示了如何在派生类中直接和间接访问基类的成员,包括私有和保护成员,并强调了在外部访问类成员时的访问控制规则。

定义

定义

自己概述

类的一中继承方式

~派生类就是将父类的元素(不含私有)作为~方式来继承

文本概述

派生类==子类

单继承+多继承(拥有基类数目的多少)

基类所有性质+自身独特性质

声明形式

class 派生类名:派生类方式 基类名{}

继承方式

继承方式

基类成员

public

公有继承

protected

保护继承

private

私有继承

存在地点

public

public

Protected

Private

任何

protected

protected

protected

Private

基类+子类+友元

private

private

不可访问

不可访问

基类+友元

[定义+继承方式]代码练习

/*
* 题目名称:派生类的调用应用
* 输出:the result of ob.getp() is:  +145
/10+20+30
* 评论:派生类对基类成员的调用形式:直接+间接
无论是子类还是基类,在外部被访问时遵守的规则都是一样的
在调用类中的函数时要看清它是什么访问控制形式
* 难度系数:3
*/
#include <iostream>
using namespace std;
class A
{
private:
    int s;
protected:
    int r;                 //声明变量r为保护成员
public:
    int t;
    void setst(int n,int m)
    {
s=n; 
t=m;
}
    int gets()
    {  
return s;  
}
};
class B:protected A          //类B以保护继承的方式继承类A的成员
{
private:
    int p;
  public:
 void setsrp(int n,int m,int l)
 {  
 setst(n,m); 
 r=m; //可直接访问基类保护继承的成员
 p=l;  
 }
 int getp()
 {  
 p=p+t*gets();  //通过基类的成员函数间接访问基类私有成员
 return p;
 } 
};
void main()
{
B ob;
ob.setst(12,12); //非法,不能通过类外对象访问基类保护继承来的成员
ob.setsrp(12,12,5);
cout<<"the result of ob.getp() is:  "<<ob.getp()<<endl;
system("pause");
}


[友元+派生类]代码练习
/*
* 题目名称:友元类+子类的应用
* 输出:自动
* 概论分析:友元类
* 自己分析:友元类的存在就是为了类中的保护和私有成员被访问而存在的
* 文本分析:相同
* 默认的继承方式为私有继承
* 评论:既有友元关系又是继承关系,两者的权利都存在
* 难度系数:3
*/
#include <iostream>
using namespace std;
class A
{
friend class C;                    //声明类C为友元
int x;                            //基类的私有成员
protected:
int y;                          //基类的保护成员
};
class B:A                          //类A私有派生类B
{
public:
//   int getx()                     //非法,不能直接访问基类的私有成员
//
// return x;
// }
int gety()                     //正确,能直接访问基类的保护成员
{  
return y;  
}
};
class C:A
{
public:
int getx();
};
int C::getx()
{
C ob;
return ob.x;                   //正确,友元能直接访问基类的私有成员
}
void main()
{
int i;
C ob;
i=ob.getx();
cout<<i<<endl;
system("pause");
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值