一、实验目的:
①.掌握派生类的声明方法和派生类构造函数的定义方法;
②.掌握不同方式下,基类成员在派生类中的访问属性和访问规则;
二、程序代码:
.h文件
# include <iostream>
using namespace std;
.cpp文件
#include "homework6.h"
class Base
{
public:
void setx(int i)
{
x = i;
}
int getx()
{
return x;
}
int x;
};
class Derived :public Base {
public:
void sety(int i)
{
y = i;
}
int gety()
{
return y;
}
void show()
{
cout << "Base::x=" << x << endl;
}
public:
int y;
};
int main()
{
Derived bb;
bb.setx(16);
bb.sety(25);
bb.show();
cout << "Base::x=" << bb.x << endl;
cout << "Derived::y=" << bb.y << endl;
cout << "Base::x=" << bb.getx() << endl;
cout << "Derived::y=" <<bb.gety()<< endl;
return 0;
}
三、运行结果:
四、相关问题:
派生类的声明:
Class 派生名类:[继承方式] 基类名{
派生类新增的数据成员和成员函数
};
派生类构造函数的一般格式:
派生类名(参数总表): 基类名(参数表)
{
派生类新增数据成员的初始化语句
}
![](https://img-blog.csdnimg.cn/a8601bed5826490182cb065b01ab3836.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ29uZ3JhdHVsYXRpb24h77-9,size_19,color_FFFFFF,t_70,g_se,x_16)
五、基类成员在派生类中的访问属性
基类中的成员 | 共有派生类中的访问属性 | 私有派生类中的访问属性 | 保护派生类中的访问属性 |
私有成员 | 不可直接访问 | 不可直接访问 | 不可直接访问 |
公有成员 | 公有 | 私有 | 保护 |
保护成员 | 保护 | 私有 | 保护 |
总结:
(1)基类中的私有成员。
无论哪种继承方式,基类中的私有成员不允许派生类继承,在派生类中是不可直接访问的。
(2)基类中的公有成员。
当类的继承方式为公有继承时,基类中的所有公有成员在派生类中仍以公有成员的身份出现。
当类的继承方式为私有继承时,基类中的所有公有成员在派生类中仍以私有成员的身份出现。
当类的继承方式为保护继承时,基类中的所有公有成员在派生类中仍以保护成员的身份出现。
(3)基类中的保护成员。
当类的继承方式为公有继承时,基类中的所有公有成员在派生类中仍以保护成员的身份出现。
当类的继承方式为私有继承时,基类中的所有公有成员在派生类中仍以私有成员的身份出现。
当类的继承方式为保护继承时,基类中的所有公有成员在派生类中仍以保护成员的身份出现。
六、派生类对基类成员的访问规则
1.私有继承的访问规则
基类中的成员 | 私有成员 | 公有成员 | 保护成员 |
访问方式 | 内部访问 | 不可访问 | 可访问 | 可访问 |
对象访问 | 不可访问 | 不可访问 | 不可访问 |
当类的继承方式为私有继承时,基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的成员函数可以直接访问它们,但是在类外部通过派生类的对象无法访问。
2.公有继承的访问规则
基类中的成员 | 私有成员 | 公有成员 | 保护成员 |
访问方式 | 内部访问 | 不可访问 | 可访问 | 可访问 |
对象访问 | 不可访问 | 可访问 | 不可访问 |
当类的继承方式为公有继承时,基类的公有成员被集成到派生类中仍为公有成员,派生类的成员函数可以直接访问他们,在类的外部,也可通过派生类的对象访问它们。基类的保护成员被继承到派生类中仍作为派生类的保护对象,派生类的成员函数可以直接访问它们,但在类的外部,派生类的对象不能访问它们。私有成员在派生类中时不可直接访问的,无论派生类成员函数还是派生类的对象,都无法直接访问基类的私有成员。
3.保护继承的访问规则
基类中的成员 | 私有成员 | 公有成员 | 保护成员 |
访问方式 | 内部访问 | 不可访问 | 可访问 | 可访问 |
对象访问 | 不可访问 | 不可访问 | 不可访问 |
当类的继承方式为保护继承时,基类的公有成员和保护成员被继承到派生类中都作为派生类的保护成员,派生类的其他成员可以直接访问它们,但是在类的外部,不能通过派生类的对象来访问它们。基类的私有成员不允许派生类继承,因此在私有派生类中是不可直接访问的。无论是派生类成员还是通过派生类的对象,都无法直接访问基类的私有成员。
七、实验总结
本次实验完成了类的继承与派生,了解了不同继承方式,基类成员在派生类中的访问属性以及派生类对基类成员的访问规则,派生属性按从严处理,不可直接访问也可以理解为“上级私有”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)