IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 关于C++中派生类列表的访问说明符学习 -> 正文阅读

[C++知识库]关于C++中派生类列表的访问说明符学习

C++中派生类列表的访问说明符

理解派生类列表的访问说明符时,应当抛开成员说明符。
派生类列表中:
(1)用public修饰的类,相当于敞开大门的房间,所有派生类和派生类的用户都拥有访问的权利。
(2)用private修饰的类,相当于带锁的房间,除了直接继承的派生类外,其余派生类和所有派生类的对象均没有钥匙(即不可访问)。
(3)用protected修饰的类,相当于带锁的房间,所有的派生类拥有开锁的钥匙,而所有派生类的对象均没有钥匙(即不可访问)。

在这里插入图片描述

参考范例

class A
{
public:
	A() = default;
	A(int i, int j, int k) :a1(i), a2(j), a3(k) {}
	int a1;
private:
	int a2;
protected:
	int a3;
};

class B
{
public:
	B() = default;
	B(int i, int j, int k) :b1(i), b2(j), b3(k) {}
	int b1;
private:
	int b2;
protected:
	int b3;
};

class C
{
public:
	C() = default;
	C(int i, int j, int k) :c1(i), c2(j), c3(k) {}
	int c1;
private:
	int c2;
protected:
	int c3;
};

class D :public A, private B, protected C
{
public:
	D() = default;
	D(int i, int j, int k) :A(i++, j++, k++), B(i++, j++, k++), C(i, j, k) {}
	void f()
	{
		std::cout << a1 << a2 << a3 //只出现a2不可访问的错误,说明派生类D可以访问直接基类A
			<< b1 << b2 << b3//只出现b2不可访问的错误,说明派生类D可以访问直接基类B
			<< c1 << c2 << c3//只出现c2不可访问的错误,说明派生类D可以访问直接基类C
			<< std::endl;
	}
	int d1;
private:
	int d2;
protected:
	int d3;
};

class E :public D
{
public:
	E() = default;
	E(int i, int j, int k) :D(i, j, k) {}
	void f()
	{
		std::cout << a1 << a2 << a3//只出现a2不可访问的错误,说明派生类E可以访问间接基类A
				<< b1 << b2 << b3//出现b1,b2,b3不可访问的错误,说明派生类E无法访问间接基类B
				<< c1 << c2 << c3//只出现c2不可访问的错误,说明派生类E可以访问间接基类C
				<< std::endl;
	}
	int e1;
private:
	int e2;
protected:
	int e3;
};

int main()
{
	D d;
	std::cout << d.a1 << d.a2 << d.a3//只出现a2,a3不可访问的错误,说明派生类D的对象可以访问直接基类A的部分
		<< d.b1 << d.b2 << d.b3//出现b1,b2,b3不可访问的错误,说明派生类D的对象无法访问直接基类B的部分
		<< d.c1 << d.c2 << d.c3//出现c1,c2,c3不可访问的错误,说明生类D的对象无法访问直接基类C的部分
		<< std::endl;

	E e;
	std::cout << e.a1 << e.a2 << e.a3//只出现a2,a3不可访问的错误,说明派生类E的对象可以访问间接基类A的部分
		<< e.b1 << e.b2 << e.b3//出现b1,b2,b3不可访问的错误,说明派生类E的对象无法访问间接基类B的部分
		<< e.c1 << e.c2 << e.c3//出现c1,c2,c3不可访问的错误,说明生类E的对象无法访问间接基类C的部分
		<< e.d1 << e.d2 << e.d3//只出现d2,d3不可访问的错误,说明生类E的对象可以访问直接基类D的部分
		<< std::endl;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:12:48  更:2021-12-04 13:14:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:30:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码