栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++类的继承

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++类的继承

系列文章目录

C++构造函数初始化https://mp.csdn.net/mp_blog/creation/editor/124911403

C++的拷贝构造https://mp.csdn.net/mp_blog/creation/editor/124911603

C++学习之重载https://blog.csdn.net/qq_45068835/article/details/124916308


目录

系列文章目录

文章目录

前言

一、public继承

父类public成员

父类protected成员

父类private成员

二、protected继承

父类public成员

父类protected成员

父类private成员

三、private继承

父类public成员

父类protected成员

父类private成员

代码示例

总结



前言

提示:这里可以添加本文要记录的大概内容:

例如:主要介绍C++中类的继承public、protected、private三类。

继承最简单的理解就是:父类授予子类的最大最大权限


一、public继承

父类public成员

对于父类是public的可以直接访问内部的成员变量,且子类实例化对象之后,对象可以直接访问父类的public成员变量。

父类protected成员

对于父类是protected的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的protected成员变量,但是可以通过成员函数进行访问。

父类private成员

对于父类是private的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的private成员变量,但是可以通过父类中的public、protected类型的成员函数进行访问。

二、protected继承 父类public成员

对于父类是public的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的public成员变量,但是可以通过成员函数进行访问,这里的成员函数可以是父类的也可以是子类的。

父类protected成员

对于父类是protected的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的protected成员变量,但是可以通过成员函数进行访问。

父类private成员

对于父类是private的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的private成员变量,但是可以通过父类中的public、protected类型的成员函数进行访问。

三、private继承 父类public成员

对于父类是public的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的public成员变量,但是可以通过成员函数进行访问,这里的成员函数可以是父类的也可以是子类的。

父类protected成员

对于父类是protected的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的protected成员变量,但是可以通过成员函数进行访问。

父类private成员

对于父类是private的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的private成员变量,但是可以通过父类中的public、protected类型的成员函数进行访问。

代码示例

代码如下(示例):

#include 
#include 
using namespace std;


class A
{
public:
	int pa;
protected:
	int ta;
private:
	int sa;
public:
	//由于初始化列表并不是内存过程的赋值顺序,因此这里容易出bug,
	//因此在初始化列表中,要按照定义的顺序为变量进行赋值
	A() :pa(100),sa(pa),ta(pa)
	{
		
	}

};

//继承方式是父类授予子类的最高权限
//保护的只能在子类中访问
//私有的是不被访问的
//
class CA : public A
{
public:
	void show()
	{
		cout << pa << endl;
		cout << ta << endl;
		//cout << sa << endl;
	}
private:

};



class CA2 : private A
{
public:
	void show()
	{
		cout << pa << endl;
		cout << ta << endl;
		//cout << sa << endl;
	}

private:

};


class CA3 : protected A
{
public:
	void show()
	{
		cout << pa << endl;
		cout << ta << endl;
		//cout << sa << endl;
	}

private:

};


int main()
{
	//什么也不继承时,分配了1字节的内存
	//一旦继承,就会继承所有的变量的值,包括私有的、保护的、公开的
	//虽然他们存在,到那时私有的是不能访问的 例如sa
	cout << sizeof(CA) << endl;

	CA ca;
	ca.show();

	CA2 ca2;
	ca2.show();
	

	CA3 ca3;
	ca3.show();
}


总结

例如:关于类的继承,最大的原则就是父类授予子类的最高权限,但是一般都可以通过成员函数来访问内部的成员变量。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/926049.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号