【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

VL53L0X加盖玻片后精度暴跌?手把手教你完成串扰校准(CrossTalk Calibration)

本文详细解析了VL53L0X激光测距传感器加盖玻片后精度下降的原因,并提供了串扰校准(CrossTalk Calibration)的完整解决方案。通过分步指导和实用代码示例,帮助工程师恢复毫米级测距精度,适用于智能门锁、扫地机器人等应用场景。

weixin_33708432的博客 539

继承及其基本语法

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

QQ960054653的博客 773

从JT808/JT1078协议到多端协同:构建高并发北斗车辆监控平台的技术实践

本文详细介绍了基于JT808/JT1078协议构建高并发北斗车辆监控平台的技术实践,包括协议解析、高并发架构设计、多端协同实现及数据持久化策略。通过Netty、Kafka等技术优化,系统成功支撑日均2000万条消息处理,为GPS车辆动态监控系统提供了可靠解决方案。

weixin_28358083的博客 224

单窗算法的地表温度反演:谷歌地球引擎GEE代码

该论文基于Statistical Mono-Window(SMW)算法,对地表温度加以求解。其中,简单地说,SMW算法即是通过简单的线性关系,对由单热红外波段所得的大气表观亮温与地表温度之间的经验关系加以表示,从而计算得到LST。

2301_78834737的博客 551

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

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

cdzg_zzk的博客 3047

ESP-IDF 5.4下esp32-camera组件编译报错?手把手教你解决头文件缺失问题

本文详细解析了ESP-IDF 5.4环境下esp32-camera组件编译时出现的头文件缺失问题,提供了从目录结构优化、CMake配置到VSCode智能感知设置的完整解决方案。针对第三方组件集成难题,文章特别强调了PRIV_REQUIRES依赖声明和路径配置的关键作用,帮助开发者高效解决编译错误并建立稳定的开发环境。

weixin_28829629的博客 307

C++编程——继承

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

professor_tao的博客 4559

卡诺图化简法

目录 1.学前需要了解知识点 2.卡诺图(karnaugh map) 3.逻辑函数的卡诺图化简法 4.总结 1.学前需要了解知识点 最小项的定义 最小项的表示方法 最小项的相邻性 最小项的定义:一个函数的某个乘积项包含了函数的全部变量,其中每个变量都以原变量或反变量的形式出现,且仅出现一次,则这个乘积项称为该函数的一个标准积项,通常称为最小项。 最小项的表示方法:通常用来表...

hahasusu的专栏 17万+

YOLOv11改进策略【Neck】| 替换RT-DETR中的CCFF跨尺度特征融合颈部结构,优化计算瓶颈与冗余问题

RT-DETR中的CCFF模块用于优化多尺度特征融合,解决传统方法的计算瓶颈与冗余问题,提升模型速度与精度,以适应实时检测需求。

Limiiiing的博客 1830

继承的基本语法

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

m0_63736943的博客 675

Amesim应用篇-电芯等效电路模型标定

为了使计算模型更加准确,在有电芯实验测试数据的情况下,依据现有的实验数据对Amesim中的电池等效电路模型进行标定。标定的目的是为了获得更加符合项目实际情况的电芯等效电路模型,标定完的电芯可以用于搭建PACK模型,也可以用于其他虚拟实验。本文以充电标定为例,进行介绍。放电标定与充电一致。

2201_75375391的博客 1213

【c++】cpp类的继承

c++类的继承

hutaotaotao的博客 2297

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

weixin_61857742的博客 3万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

NueXini的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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、付费专栏及课程。

余额充值