【C++】继承语法&&继承方式

Cpp_继承 一、继承的基本概念第一级抽象:从具体的对象抽象出共同的属性和行为。学生:姓名、年龄、学号、吃饭、睡觉、学习 教师:姓名、年龄、工资、吃饭、睡觉、授课 第二级抽象:将类型之间共性抽取出来形成超集,将类型之间的个性具体化的不同子集中。人类:姓名、年龄、吃饭、睡觉 - 超集体现共性 - 基类 | 派生 ^ 学生是人类的一部分:学号、学习 \ 子集 - 子类 V 阅读详情

何为继承?

继承是类与类之间的关系,与现实世界的继承类似。被继承的类称为父类或基类,继承的类称为子类或派生类。例如类B继承于类A,那么B拥有A的成员变量和成员函数。
派生类除了拥有基类的成员还可以定义自己的新成员。

使用继承的场景:

1.要创建的新类与已有的类类似,只是多出几个成员变量或者成员函数
2.当要创建多个类,它们拥有很多类似的成员变量或者成员函数时,可以把这些类共同的成员提取出来,定义一个基类,然后由基类继承。

声明派生类的语法:

class 派生类名 : [继承方式] 基类名 {
派生类新增加的成员
} ;
来举个继承的小实例

/*************************************************************************
    > File Name: 继承1.cpp
    > Author: Tanswer_
    > Mail: 98duxm@gmail.com
    > Created Time:
 ************************************************************************/

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <set>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <stack>
#include <queue>
using namespace std;

//基类
class People
{
private:
    string  name;
    int     age;
public:
    void    setName(string );
    void    setAge(int );
    string  getName();
    int     getAge();
};

void People::setName(string name)
{
    this->name = name;
}


void People::setAge(int age)
{
    this->age = age;
}

string People::getName()
{
    return name;
}

int People::getAge()
{
    return this->age;
}

//派生类--Student
class Student: public People   //注意语法
{
private:
    float score;
public:
    void  setScore(float );
    float getScore();
};

void Student::setScore(float score)
{
    this->score = score;
}

float Student::getScore()
{
    return score;
}

int main()
{
    Student stu;
    /*派生类直接使用基类的成员*/
    stu.setName("小明");
    stu.setAge(19);
    stu.setScore(99.9f);

    cout << stu.getName() << "   年龄是: " << stu.getAge() << "   成绩是:" << stu.getScore() << endl;
    return 0;
}

继承方式

继承方式包括public(公有的)、private(私有的)和protected(受保护的).可写可不写,不写则默认为private.

1)public继承方式
基类中所有public成员在派生类中为public属性;
基类中所有protected成员在派生类中为protected属性;

2)protectrd继承方式
基类中所有public、protected成员在派生类中为protected属性;

3)private继承方式
基类中所有public、protected成员在派生类中为private属性;

注意:
1.基类中的private成员在派生类中始终是不可访问的。
2.基类成员在派生类中的访问权限不得高于继承方式中指定的权限。

改变访问属性

使用using 关键字改变基类成员在派生类中的访问属性

/*************************************************************************
    > File Name: 继承_访问属性.cpp
    > Author: Tanswer_
    > Mail: 98duxm@gmail.com
    > Created Time: 
 ************************************************************************/

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <set>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <stack>
#include <queue>
using namespace std;

class People
{
protected:
    string name;
    int age;
public:
    void say()
    {
        cout << "hello linux" << endl;
    }
};

class Student: public People
{
private:
    using People::say;  //say不能加括号
public:
    using People::name;
    using People::age;
    float score;
    void display();
};

void Student::display()
{
    cout << name << " .   Age--" << age << "  .  Score--" << score << endl;
}

int main()
{
    Student stu;
    stu.name = "小明";
    stu.age = 19;
    stu.score = 99.9f;
    //stu.say();  //error 
    stu.display();

    return 0;
}

  基类People包含两个protected属性的成员变量和一个public属性的成员函数。定义派生类时采用public继承方式,那么基类People成员在派生类Student的访问权限是不变的。

  下面我们使用 using 改变了默认的访问权限,将say()改为private属性的,所以代码第54行直接访问 say 函数是错误的;将name age变量修改为public属性,所以可以直接赋值。

多级继承

多级继承的规则与上面相同。各成员在不同类中的访问属性在这里就不举例了,有兴趣的同学可以自己列一个表格看一下。

C++继承的基本语法 前言: 继承是面向对象三大特性之一 有些类与类之间存在特殊的关系,例如下图中: 我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。 这个时候我们就可以考虑利用继承的技术,减少重复代码 继承的基本语法 例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同 接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处 普通实现: //Java页面 class Java { public: void header() { 阅读详情

相关推荐

CPP中的继承语法

CPP中的继承语法

BinaryWiker的博客 1101

C++语法(15)---- 继承

介绍了三大面向对象特点之一的继承

竹杖芒鞋轻声马 875

Qt 6.5实战:用QMediaPlayer搞定RTSP监控流播放(附LAV Filters解码器避坑指南)

本文详细介绍了如何在Qt 6.5中使用QMediaPlayer实现低延迟RTSP监控流播放,并提供了LAV Filters解码器的配置避坑指南。通过优化缓冲策略和硬件加速设置,显著提升视频流的播放性能和稳定性,适用于工业视觉检测和安防监控等实时场景。

weixin_33712987的博客 398

继承及其基本语法

一、类与类的关系 has-A,uses-A 和 is-A has-A    :包含关系,用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示,即一个类中的数据成员是另一种已经定义的类。 uses-A : 一个类部分地使用另一个类。通过类之间成员函数的相互联系,定义友员或对象参数传递实现。 is-A      : 机制称为“继承”。关系具有传递性,不具有对称性。 二、

QQ960054653的博客 773

【SigmaStar SSC335系列】空片用Flash_Tool烧写

简介 本文主要讲新拿到的PCBA,板上spi nand flash还是空的,如何在这种情况下烧录固件,这里讲解用官方Flash_Tool烧写的方式。 但只讲一些注意的地方和坑,其它的官方文档里说的比较清楚,不多说。 准备 Flash_Tool烧写软件 编译打包好烧写镜像 串口烧录小板 ----- 这个是个坑,在官方文档里并没有提及,刚开始用的平时调试的USB转串口,怎么都没反应,一度不知烧写软件不对还是硬件有问题,最后通过厂家技术支持才得知,除了专门的Flash_Tool外,还要专门的串口烧录器

老K 4697

告别手动改图!用Python+PyWin32驱动SolidWorks,实现参数自动化修改(保姆级避坑指南)

本文详细介绍了如何利用Python和PyWin32驱动SolidWorks实现参数自动化修改,提供从环境配置到API连接的工业级解决方案。通过实战案例和避坑指南,帮助工程师高效搭建自动化脚本工作流,显著提升设计效率。

weixin_30614109的博客 741

C++基础语法(五)继承——万字总结,干货满满

C++继承继承是什么、为什么会出现继承1、什么样的场景会使用继承2、什么是继承3、继承的语法继承方式1、访问限定修饰符的作用(1)修饰类中成员(2)修饰继承方式基类\派生类对象赋值兼容问题(切割问题)1、基类\派生类对象赋值兼容的基本概念2、其他类型的切割指针赋值引用赋值继承中的作用域隐藏\遮蔽遮蔽的概念及理解遮蔽与函数重载派生类的默认成员函数1、构造函数2、拷贝构造3、operator=( )4、析构函数多继承单继承与多继承的概念菱形继承菱形继承的坑虚继承终极问题:C++如何通过虚继承解决数据冗余以及二义

cdzg_zzk的博客 3047

微信中调起支付宝支付

微信中调用支付宝支付,首先我们知道微信是不能直接调用支付宝的,所以我们需要使用一个中间页提示用户在浏览器中打开,然后进行网页支付或打开app支付。以下为详细唤起支付宝的步骤、业务代码以及相关页面图。 如有问题欢迎评论留言,看到定回复哦^_^\(^o^)/~ 一、微信中唤起支付宝,有几个步骤: 1、中间页引导用户在浏览器中打开去唤起支付宝。 2、浏览器中打开支付宝或app中打开支付宝。 3...

han_calligrapher的博客 2万+

C++编程——继承

文章目录1. 继承的基本语法2. 继承方式 继承的知识点结构: 继承是面向对象三大特性之一,例如动物类下可以有猫类、狗类。显然猫类、狗类都具有动物类的属性,于此同时,也就有自己独特的属性。这个时候,猫类、狗类就是继承于动物类,采用继承的技术,可以减少重复的代码。 1. 继承的基本语法 语法:class 子类:继承方式 基类 继承示例: 一般网页都有很多部分相似的,我们可以将这些相似的部分抽象出来,作为一个基类。然后子类只需要继承基类,在基类的基础上添加自身其他的属性或者方法就可以实现基本的功能,同时减少

professor_tao的博客 4559

Codex 赋能UI自动化测试

✅ 零编码门槛:业务人员也能直接上手✅ 无需复杂配置:跳过部署陷阱,分钟级启用✅ 无权限风险:沙箱隔离 + 操作审计,安全可控✅ 精准匹配 UI 自动化需求:生成代码与执行操作一体化本文我使用CRM系统分类管理功能进行测试演示,手把手教你从测试用例编写,到上传Codex、自动执行浏览器操作,每一步都有细节,看完直接复刻到工作中。

十二测试录 458

适航规章、标准,书籍资料下载汇总(增加DO-297 IMA)

从事IMA平台适航工作的朋友看过来,DO-297英文版PDF可以下载了!更新日志:2024-9-28:初版。2024-10-21:增加DO-330英文版PDF下载,后台回复关键词”330“获取下载链接。2024-10-30:增加DO-160G中文版(非机翻)和英文版PDF下载,后台回复关键词”160“获取下载链接。2024-11-10:增加DO-297英文版PDF下载,后台回复关键词”297“获取下载链接。以下是一些收集到的适航相关的资料,分享给大家。

qq_41854911的博客 1577

继承的基本语法

有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码。

m0_63736943的博客 675

YOLO26 改进 | 基于特征蒸馏 | 知识蒸馏 (Response & Feature-based Distillation)

本文系统介绍了YOLO26中的知识蒸馏技术,包含五大核心方法:基于响应的蒸馏(学习分类概率)、基于特征的蒸馏(学习中间层表示)、基于关系的蒸馏(学习特征关联)、通道维度蒸馏(CWD)和前景背景分离蒸馏(FGD)。文章深入解析了每种方法的数学原理与实现细节,并提出动态训练策略,包括一致性匹配和蒸馏权重退火机制。通过教师模型向学生模型传递"暗知识",在保持模型轻量化的同时逼近大模型性能。配套代码支持模块化组合不同蒸馏方法,为YOLO26模型压缩提供了一套完整的解决方案。

weixin_51988935的博客 271

【c++】cpp类的继承

c++类的继承

hutaotaotao的博客 2297

构建.NET网站:VSCode还是Visual Studio?揭开开发工具的选择之谜

选择VSCode还是Visual Studio,归根结底是取决于你的具体需求和偏好。🔍 这两款工具各有千秋,都能为你的.NET网站开发提供强大的支持。希望这篇文章能够帮助你更全面地了解这两款工具,做出明智的选择。

墨夶的博客 787

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++语法——详解虚继承

一.什么是虚继承所谓虚继承(virtual)就是子类中只有一份间接父类的数据。该技术用于解决多继承中的父类为非虚基类时出现的数据冗余问题,即菱形继承问题。,那么,当我们用D实例化对象调用a时,编译会报错,因为发生了混淆。除非指定类域B或C。当然指定A也可以,因为默认会从第一个父类中找。此时,D的实例化对象内部结构如下:而当我们使用虚继承时,结构是下图这样,D中只有一份父类A,当我们调用A中数据时,并不会发生冗余。

weixin_61857742的博客 3万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++的三种继承方式详解

文章目录@[toc]C++的三种继承方式详解以及区别前言一、public继承二、protected继承三、private继承四、三者区别五、总结后话 C++的三种继承方式详解以及区别 前言 我发现有时候概念性的东西,理解起来还是很难的,于是本文用简单的几个例子,来说明这三种不同的继承方式,他们之前的区别~ 一、public继承 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。 派生类中的成员函数可以直接访问基类中的public和pr

NueXini的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

c++继承详解之一——继承的三种方式、派生类的对象模型

C++是OOP(Object Oriented Programming)语言,即面向对象编程语言。OOP的核心思想就是数据抽象(类的设计),继承和动态绑定。 类展现了C++的封装特性,即将具体的实现过程隐藏,只向外暴露公有接口,即数据抽象,通过数据抽象,我们可以将类的接口与实现分离,(即设计类)。 与C相比,类可以通过相互间的继承和派生形成层次结构,派生类继承了基类的数据结构和方法 [编译时]。 使

lixungogogo的博客 3万+

【语法】C++的继承

在继承体系中父类和子类不在一个作用域,他们都有独立的作用域public:public:上述代码中,可以看到子类和父类都有个_age成员,那此时如果调用teacher实例化对象的_age会调用哪个呢?答案是teacher中的_age子类和父类中有同名成员,子类成员将屏蔽父类对同名成员的直接访问,这种情况叫隐藏,也叫重定义。那如果就是要访问父类的同名成员要怎么办?public:public://父类::父类成员如上述代码所示,只需要指定作用域就好了。

KEEP ON KEEPING ON 1381

【CPP】继承语法详解与菱形继承

CPP继承语法,重点讲解了多继承中的菱形继承问题!

BinaryWiker的博客 878

【C++】:继承[下篇](友元&&静态成员&&菱形继承&&菱形虚拟继承)

1.很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。2.多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。3.继承和组合(1)public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。(2)组合是一种has-a的关系。假设B组合了A,每个B对象中都有一个A对象。(3)优先使用对象组合,而不是类继承。(4)继承可以直接访问基类的protected 和 public成员。

2301_77900444的博客 1801

C++——继承

面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为,新建的类称为。

头秃中。。。。。 2878

C++中三种继承方式的详解

C++中的继承方式有三种,分别是公有继承、私有继承和保护继承。公有继承是最普遍和默认的继承方式,允许派生类完全访问基类的公有成员函数和数据,派生类还可以添加自己的数据成员和成员函数,从而扩展基类的功能。私有继承是一种对基类进行实现细节隐藏的方式,只有派生类的内部可以直接访问和调用被继承类中的私有成员。保护继承是介于公有继承和私有继承之间的一种继承方式,它保护基类成员不被随意访问和修改,同时也可以在派生类的内部和子类中进行访问,实现更为灵活的功能。

行到水穷处,坐看云起时。 9369

【C++】—— 一篇文章解决面试 继承&&菱形继承

在C++这个广袤而神秘的编程世界里,继承宛如一颗璀璨的明珠,散发着独特的魅力。它是连接代码世界的纽带,也是实现代码复用与扩展的神奇魔法。当我们深入探索C++继承的奥秘时,就仿佛开启了一段奇妙的旅程,在这个旅程中,我们将领略到面向对象编程的博大精深,感受到代码在继承的力量下焕发出的无限活力。每一行代码,都是我们对世界的理解和表达;每一次继承,都是我们对程序设计的又一次探索和创新。在这个过程中,我们不仅能够提高代码的效率和质量,更能够培养自己严谨的逻辑思维和创造力。

2402_85267481的博客 1458

【C++深度探索】继承机制详解(友元&&静态&&菱形继承&&虚拟继承&&组合)

点击跳转到文章【C++深度探索】:继承(定义&&赋值兼容转换&&作用域&&派生类的默认成员函数)前面我们已经学习了继承前面部分的相关知识,本文主要介绍1、很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。2、多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。3、public继承是一种is-a的关系。

island1314的博客 1198

c++的继承方式

上面我讲了c++继承的概念以及语法,c++继承的语法一般为: C++继承的一般语法为: class 派生类名:[继承方式] 基类名{ 派生类新增加的成员 }; 现在我们知道,public,protected,private三个关键字除了可以修饰类的成员,还可以指定继承方式。 public,protocol,private修饰类的成员、 类成员的访问权限由高到低依次为public->prote...

weixin_43700340的博客 1288
上一篇: 【C++】构造函数&&析构函数
下一篇: 【C++】继承时的名字遮蔽&&派生类的构造函数
Tanswer_
博客等级 码龄11年 231粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值