定义
定义 | 自己概述 | 类的一中继承方式 ~派生类就是将父类的元素(不含私有)作为~方式来继承 |
文本概述 | 派生类==子类 单继承+多继承(拥有基类数目的多少) 基类所有性质+自身独特性质 | |
定义形式 | 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");
}