C++之继承

今天给大家介绍一下C++继承中的一些概念,继承分为三种,分别为公有继承,保护继承,私有继承。

首先解释一下不同的权限关键字的作用:

  • public:被此关键字修饰的类,可以被任意的实体进行访问。
  • **protected:**被此关键字修饰的类,只能在本类中和其派生类中的成员函数访问。
  • **private:**被此关键字修饰的类,只能本类的成员函数访问。

接下来介绍一下不同继承带来的不同作用:

接下来有四个类,A、B、C、D,代码如下:

A类为基类

cpp 复制代码
class A {
public:
	int a;//公共权限
protected:
	int b;//保护权限
private:
	int c;//私有权限
};

B类:因为是共有继承,所以被B继承之后,B中的a、b、c的权限和A中的一样,为public a,protected b,private c;再有类继承B类,依然可以访问a和b,c依然不可访问。如果不是派生类,如果是b的对象实体,则b无法访问protected和private修饰的b和c

cpp 复制代码
class B :public A {//公有继承
	void test1() {
		cout << a << endl;
	}
	void test2() {
		cout << b << endl;
	}
	void test3() {
		cout << c << endl;
	}
};

导致结果1:(没有继承,对象引用)

导致结果2:(派生类继承基类)

C类:因为是保护继承,所以被C继承之后,C中的a、b、c的权限公有的和保护权限全部变为保护权限,私有权限不变。为protected a,protected b,private c;导致C类的对象无法访问C中的abc。

cpp 复制代码
class C :protected A {//保护继承
	void test1() {
		cout << a << endl;
	}
	void test2() {
		cout << b << endl;
	}
	void test3() {
		cout << c << endl;
	}
};

导致结果:

D类:因为是私有继承,所以被D继承之后,D中的a、b、c的权限全部变为私有权限。为private a,private b,private c; 导致D类的对象全都无法访问abc。

cpp 复制代码
class D :private A {//私有继承
	void test1() {
		cout << a << endl;
	}
	void test2() {
		cout << b << endl;
	}
	void test3() {
		cout << c << endl;
	}};

导致结果:

注:本文章仅为学习路线中感悟,有错误之处还请指出!

相关推荐
MC皮蛋侠客4 分钟前
distcc结合VSCode实现分布式编译的全面指南
c++·ide·分布式·vscode
YJlio8 分钟前
Python 一键拆分 PDF:按“目录/章节”建文件夹 + 每页单独导出(支持书签识别&正文识别)
开发语言·python·pdf
IT方大同9 分钟前
C语言进制转化
c语言·开发语言
天赐学c语言17 分钟前
12.20 - 反转链表II && 传值和传地址的区别
数据结构·c++·算法·链表·leecode
野生风长18 分钟前
从零开始的C语言:文件操作与数据存储(上)(文件的分类,文件的打开和关闭)
c语言·开发语言
_OP_CHEN19 分钟前
【算法基础篇】(三十六)图论基础之拓扑排序:从原理到实战,搞定 DAG 图的 “先后次序” 难题
c++·算法·蓝桥杯·图论·拓扑排序·算法竞赛·acm/icpc
我是哈哈hh29 分钟前
【Python数据分析】数据可视化(全)
开发语言·python·信息可视化·数据挖掘·数据分析
郝学胜-神的一滴30 分钟前
使用EBO绘制图形:解锁高效渲染与内存节省之道
c++·qt·游戏·设计模式·系统架构·图形渲染
拾贰_C32 分钟前
【python| pytorch】卸载py库,手动法
开发语言·pytorch·python
!停33 分钟前
数据在内存中的存储(2)
开发语言·c++·算法