【C++学习手札】一文带你初识C++继承

这篇具有很好参考价值的文章主要介绍了【C++学习手札】一文带你初识C++继承。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++

                                         

                                        食用指南:本文在有C基础的情况下食用更佳  

                                       🍀本文前置知识: C++类 

                                       ♈️今日夜电波:napori—Vaundy

                                                                1:21 ━━━━━━️💟──────── 3:23
                                                                    🔄   ◀️   ⏸   ▶️    ☰ 

                                      💗关注👍点赞🙌收藏您的每一次鼓励都是对我莫大的支持😍 


目录

🍑一、继承和派生的概述

🍒 二、继承的语法

派生类定义格式:

继承方式分类:

基类个数分类:

派生类继承基类的规则 :

🍈三、继承中的构造函数和析构函数

构造和析构的顺序

  🍉子类中的构造(重要)

知识点1:

 知识点2:

🥝四、父类和子类的同名处理

成员变量的处理

 成员函数的处理


🍑一、继承和派生的概述

        在C++中,继承是一种对象-oriented编程(面向对象编程)的概念,它允许创建一个新的类(称为派生类)从一个现有的类(称为基类)继承属性和行为。通过继承,派生类可以获得基类的成员变量、成员函数和其他特性。

        继承有几种类型:公有继承、私有继承和受保护的继承。在公有继承中,基类的公有成员在派生类中仍然是公有的;在私有继承中,基类的公有成员在派生类中变为私有的;在受保护的继承中,基类的公有成员在派生类中变为受保护的。

        派生类可以通过继承来扩展基类的功能,它可以添加新的成员变量和成员函数,也可以重写基类的成员函数以改变其行为。派生类还可以访问基类的非私有成员。

        继承的优点:减少代码的冗余 提高代码的重用性

         一图让你认识继承和派生的概念~

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++


🍒 二、继承的语法

派生类定义格式:

        注意以下两个格式都是一样的,定义以及意义都是相同的!


class 子类: 继承方式 父类名{

 //子类新增的数据成员和成员函数

 };


Class 派生类名 : 继承方式 基类名{

 //派生类新增的数据成员和成员函数

 };

继承方式分类:

        public : 公有继承 (重要)
        private : 私有继承
        protected : 保护继承

基类个数分类:


单继承:指每个派生类只直接继承了一个基类的特征 (一个父类 派生出 一个子类)
多继承:指多个基类派生出一个派生类的继承关系,多继承的派生类直接继承了不止一个基
类的特征(多个父类 派生出 一个子类)
 

注意:
        子类继承父类,子类拥有父类中全部成员变量和成员方法(除了构造和析构之外的成员方法),但是在子类中,继承的成员并不一定能直接访问,不同的继承方式会导致不同的访问权限。

派生类继承基类的规则 :

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++

         一图让你理解~

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++


🍈三、继承中的构造函数和析构函数

构造和析构的顺序

class Other
	 {
 public:
	 Other()
		 {
		 cout << "对象成员的构造函数" << endl;
		 }
	 ~Other()
		 {
		 cout << "对象成员的析构函数" << endl;
		 }
	 };
 class Base {
 public:
	 Base()
		 {
		 cout << "父类的无参构造函数" << endl;
		 }
	 ~Base()
		 {
		 cout << "父类中的析构函数" << endl;
		 }
	
};
 class Son :public Base
 {
 public:
	 Son()
		 {
		 cout << "子类的无参构造" << endl;
		 }
	 ~Son()
		 {
		 cout << "子类中的析构函数" << endl;
		 }
	
		 Other ob;//对象成员
	
		 };
 void test01()
 {
	 Son ob1;
  }

        运行结果如下:

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++

         一图让你理解~

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++

  🍉子类中的构造(重要)

        先看以下代码:

        父类

class Base
	 {
 private:
	 int a;
 public:
	Base()
	{
	 cout << "父类的无参构造函数" << endl;  
	}
	 Base(int a)
		 {
		 this-> a = a;
		 cout << "父类的有参构造函数" << endl;
		 }
	 ~Base()
		 {
		 cout << "父类中的析构函数" << endl;
		 }
	 };
知识点1:

        子类会默认调用 父类的 无参构造

        子类1:

 class Son :public Base
 {
 private:
	 int b;
 public:
	 Son()
	 {
		 cout << "子类的无参构造" << endl;
	 }
	 Son(int b)
	 {
		 this->b = b;
		 cout << "子类的有参构造函数int" << endl;
	 }

	 ~Son()
	 {
		 cout << "子类中的析构函数" << endl;
	 }
 };

 void test01()
 { 
	 Son ob1(10);
 }

        运行结果:

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++

 知识点2:

        子类 必须显示 使用初始化列表 调用 父类的有参构造

         子类2:

 class Son :public Base
 {
 private:
	 int b;
 public:
	 Son()
		 {
		 cout << "子类的无参构造" << endl;
		 }
	 Son(int b)
		 {
		 this-> b = b;
		 cout << "子类的有参构造函数int" << endl;
		 }
	
		 //子类必须用 初始化列表 显示的调用父类的有参构造
		 //父类名称(参数)
		 Son(int a, int b) :Base(a)//显示的调用父类的有参构造
		 {
		 this-> b = b;
		 cout << "子类的有参构造函数 int int" << endl;
		 }
	 ~Son()
		 {
		 cout << "子类中的析构函数" << endl;
		 }
	 };


 void test01()
 { 
	//子类 默认 会调用 父类的无参构造
	//子类必须用 初始化列表 显示的调用父类的有参构造
	//父类名称+()
	Son ob2(10, 20);

 }

        运行结果:

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++


🥝四、父类和子类的同名处理

成员变量的处理

        1、当 父类和子类 成员变量同名时 在子类就近原则 选择本作用域的子类成员
        2、如果在子类中 必须使用父类中的同名成员 必须加上父类的作用域。

         栗子:

class Base
	 {
	 //父类的私有数据 一旦涉及继承 在子类中不可见
 public:
	 int num;
 public:
	 Base(int num)
		 {
		 this-> num = num;
		 cout << "Base有参构造int" << endl;
		 }
	 ~Base()
		 {
		 cout << "析构函数" << endl;
		 }
	 };

 class Son :public Base
 {
 private:
	 int num;
 public:
	 Son(int num1, int num2) :Base(num1)
		 {
		 this-> num = num2;
		 cout << "有参构造int int" << endl;
		 }
	
		 ~Son()
		 {
		 cout << "析构函数" << endl;
		 }
	 void showNum(void)
		 {
		 //如果在子类中 必须使用父类中的同名成员 必须加上父类的作用域
			 cout << "父类中的num = " << Base::num << endl; 
			 //当 父类和子类 成员变量同名时 在子类就近原则 选择本作用域的子类成员
			 cout << "子类中的num = " << num << endl;
		 }
	 };

 void test01()
 {
	 Son ob1(10, 20);
	 ob1.showNum();
 }

        运行结果:

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++

 成员函数的处理

        1、子类继承父类所有成员函数 和成员变量

        2、一旦子类 实现了 父类的同名成员函数 将屏蔽所有父类同名成员函数

          栗子: 

class Base
	 {
 public:
	 void func(void)
		 {
		 cout << "父类中的void func" << endl;
		 }
	 void func(int a)
		 {
		 cout << "父类中的int func a = " << a << endl;
		 }
	 };

 class Son :public Base
 {
  public:
	 //一旦子类 实现了 父类的同名成员函数 将屏蔽所有父类同名成员函数
		 void func(void)
		 {
		 cout << "子类中voidfunc" << endl;
		 }
	 };
 void test01()
 {
	 //为啥构造和析构除外?父类的构造和析构 只有父类自己知道该怎么做(构造和析构 系统自动调用)
	 //子类会继承父类所有成员函数(构造和析构函数除外) 和成员变量
	 Son ob1;
	 ob1.func();
	 //ob1.func(10);//err //一旦子类 实现了 父类的同名成员函数 将屏蔽所有父类同名成员函数
		
		 //如果用户 必须要调用父类 的同名成员函数 必须加作用域
	 ob1.Base::func();//调用父类的void func
	 ob1.Base::func(10);//调用父类的int func
 }

        运行结果:

【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++

         本文仅仅为对于C++中继承的基础知识,重要的还是在虚函数那一块,下一篇,我会详细的介绍虚函数!希望大家继续支持Thanks♪(・ω・)ノ


                感谢你耐心的看到这里ღ( ´・ᴗ・` )比心,如有哪里有错误请踢一脚作者o(╥﹏╥)o!  

                                【C++学习手札】一文带你初识C++继承,C++修仙 筑基中,c++ 

                                                                 给个三连再走嘛~      文章来源地址https://www.toymoban.com/news/detail-653360.html

到了这里,关于【C++学习手札】一文带你初识C++继承的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaScript速成之路】一文带你初识JavaScript

    📃个人主页:「小杨」的csdn博客 🔥系列专栏:【JavaScript速成之路】 🐳希望大家多多支持🥰一起进步呀! 📜前言:从今天开始,小杨就开始了一个新的专栏【JavaScript速成之路】,该专栏主要向大家介绍一些JavaScript的基础语法,适合初学者阅读,希望大家能够通过该专栏的

    2024年02月01日
    浏览(44)
  • 【C++】继承初识

    继承是面向对象程序设计中 代码复用 最重要的手段。它允许在保持原有基类(父类)的基础上进行类的扩展,产生派生类(子类)。这体现了面向对象程序设计的层次结构。 在继承之前所接触的复用大多都是函数复用,继承却是类设计层次的复用。 继承方式与访问限定符一样,

    2024年02月02日
    浏览(40)
  • 【C++学习手札】-引用与内联函数以及C++中对const拓展详解(超详细!)

                                           食用指南:本文在有C基础的情况下食用更佳                                        🔥 这就不得不推荐此专栏了:C语言                                        🍀 内联函数前置知识 :宏函数

    2024年02月14日
    浏览(53)
  • 【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)

    🌈个人主页:  Aileen_0v0 🔥系列专栏 :Java学习系列专栏 💫个人格言:\\\"没有罗马,那就自己创造罗马~\\\"   目录 继承  私有成员变量在继承中的使用​编辑  当子类和父类变量不重名时: 当子类和父类重名时:  📝总结: 继承的含义: toString方法的作用:  重写和重载的区别 对比狗和

    2024年02月05日
    浏览(58)
  • 一文带你通俗理解23种软件设计模式(推荐收藏,适合小白学习,附带C++例程完整源码)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处        设计模式是为了解决在软件开发过程中遇到的某些问题而形成的思想。同一场景有多种设计模式可以应用,不同的模式有各自的优缺点,开发者可以基于自身需求

    2024年02月09日
    浏览(56)
  • 【C++】一文带你吃透C++多态

    🍎 博客主页:🌙@披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 C/C++专栏 🌙那些看似波澜不惊的日复一日,一定会在某一天让你看见坚持的意义!-- 算法导论🌙 🍉一起加油,去追寻、去成为更好的自己! @TOC 提示:以下是本篇文章正文内容,

    2024年02月08日
    浏览(67)
  • 【C++】一文带你走入vector

    ヾ(๑╹◡╹)ノ\\\" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)ノ\\\" vector文档介绍 大部分的使用与string的使用类似 vector类似于顺序表,是动态增长的数组。头文件:#include vector vector是表示 可变大小数组 的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也

    2024年02月08日
    浏览(56)
  • 【C++ • STL】一文带你走进string

    ヾ(๑╹◡╹)ノ\\\" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)ノ\\\" STL (standard template libaray- 标准模板库 ):是C++标准库的 重要组成部分 ,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。 STL六大组件 开源的:linux、git、STL、mysql、安卓……【开源会发

    2024年02月09日
    浏览(47)
  • 【C++】万字一文全解【继承】及其特性__[剖析底层化繁为简](20)

    前言 大家好吖,欢迎来到 YY 滴C++系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁 主要内容含: 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专栏 YY的《C++11》专栏 YY的《Linux》专栏 YY的《数据结构》专栏 YY的《C语言基础》专栏 YY的《初学者易

    2024年02月01日
    浏览(77)
  • 【C++杂货铺】一文带你走进RBTree

    红黑树是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是 Red 或 Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,这句话换个意思就是:红黑树中最长路径不超过最短路径的 2 倍

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包