《C++进阶--9.继承》

CPP中的继承语法 阅读详情

目录

9. 继承

9.1 继承的基本语法

9.2 继承方式

9.3 继承中的对象模型

9.4 继承中构造和析构顺序

9.5 继承同名成员处理方式

9.6 继承同名静态成员处理方式

9.7 多继承语法

9.8 菱形继承


9. 继承

继承是面向对象三大特性之一

有些类与类之间存在特殊的关系,例如下图中:

我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。

这个时候我们就可以考虑利用继承的技术,减少重复代码

9.1 继承的基本语法

例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同

接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处

普通实现:

//Java页面
class Java 
{
public:
    void header()
    {
        cout << "首页、公开课、登录、注册...(公共头部)" << endl;
    }
    void footer()
    {
        cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
    }
    void left()
    {
        cout << "Java,Python,C++...(公共分类列表)" << endl;
    }
    void content()
    {
        cout << "JAVA学科视频" << endl;
    }
};
//Python页面
class Python
{
public:
    void header()
    {
        cout << "首页、公开课、登录、注册...(公共头部)" << endl;
    }
    void footer()
    {
        cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
    }
    void left()
    {
        cout << "Java,Python,C++...(公共分类列表)" << endl;
    }
    void content()
    {
        cout << "Python学科视频" << endl;
    }
};
//C++页面
class CPP 
{
public:
    void header()
    {
        cout << "首页、公开课、登录、注册...(公共头部)" << endl;
    }
    void footer()
    {
        cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
    }
    void left()
    {
        cout << "Java,Python,C++...(公共分类列表)" << endl;
    }
    void content()
    {
        cout << "C++学科视频" << endl;
    }
};
​
void test01()
{
    //Java页面
    cout << "Java下载视频页面如下: " << endl;
    Java ja;
    ja.header();
    ja.footer();
    ja.left();
    ja.content();
    cout << "--------------------" << endl;
​
    //Python页面
    cout << "Python下载视频页面如下: " << endl;
    Python py;
    py.header();
    py.footer();
    py.left();
    py.content();
    cout << "--------------------" << endl;
​
    //C++页面
    cout << "C++下载视频页面如下: " << endl;
    CPP cp;
    cp.header();
    cp.footer();
    cp.left();
    cp.content();
​
}
​
int main() {
​
    test01();
​
    system("pause");
​
    return 0;
}

继承实现:

//公共页面
class BasePage
{
public:
    void header()
    {
        cout << "首页、公开课、登录、注册...(公共头部)" << endl;
    }
​
    void footer()
    {
        cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
    }
    void left()
    {
        cout << "Java,Python,C++...(公共分类列表)" << endl;
    }
​
};
​
//Java页面
class Java : public BasePage
{
public:
    void content()
    {
        cout << "JAVA学科视频" << endl;
    }
};
//Python页面
class Python : public BasePage
{
public:
    void content()
    {
        cout << "Python学科视频" << endl;
    }
};
//C++页面
class CPP : public BasePage
{
public:
    void content()
    {
        cout << "C++学科视频" << endl;
    }
};
​
void test01()
{
    //Java页面
    cout << "Java下载视频页面如下: " << endl;
    Java ja;
    ja.header();
    ja.footer();
    ja.left();
    ja.content();
    cout << "--------------------" << endl;
​
    //Python页面
    cout << "Python下载视频页面如下: " << endl;
    Python py;
    py.header();
    py.footer();
    py.left();
    py.content();
    cout << "--------------------" << endl;
​
    //C++页面
    cout << "C++下载视频页面如下: " << endl;
    CPP cp;
    cp.header();
    cp.footer();
    cp.left();
    cp.content();
​
​
}
​
int main() {
​
    test01();
​
    system("pause");
​
    return 0;
}

总结:

继承的好处:可以减少重复的代码

语法:class A : public B; // class 子类 : 继承方式 父类

A 类称为子类 或 派生类

B 类称为父类 或 基类

派生类中的成员,包含两大部分:

一类是从基类继承过来的,一类是自己增加的成员。

从基类继承过过来的表现其共性,而新增的成员体现了其个性。

9.2 继承方式

继承的语法:class 子类 : 继承方式 父类

继承方式一共有三种:

  • 公共继承

  • 保护继承

  • 私有继承

示例:

class Base1
{
public: 
    int m_A;
protected:
    int m_B;
private:
    int m_C;
};
​
//公共继承
class Son1 :public Base1
{
public:
    void func()
    {
        m_A; //可访问 public权限
        m_B; //可访问 protected权限
        //m_C; //不可访问
    }
};
​
void myClass()
{
    Son1 s1;
    s1.m_A; //其他类只能访问到公共权限
}
​
//保护继承
class Base2
{
public:
    int m_A;
protected:
    int m_B;
private:
    int m_C;
};
class Son2:protected Base2
{
public:
    void func()
    {
        m_A; //可访问 protected权限
        m_B; //可访问 protected权限
        //m_C; //不可访问
    }
};
void myClass2()
{
    Son2 s;
    //s.m_A; //不可访问
}
​
//私有继承
class Base3
{
public:
    int m_A;
protected:
    int m_B;
private:
    int m_C;
};
class Son3:private Base3
{
public:
    void func()
    {
        m_A; //可访问 private权限
        m_B; //可访问 private权限
        //m_C; //不可访问
    }
};
class GrandSon3 :public Son3
{
public:
    void func()
    {
        //Son3是私有继承,所以继承Son3的属性在GrandSon3中都无法访问到
        //m_A;
        //m_B;
        //m_C;
    }
};

9.3 继承中的对象模型

问题:从父类继承过来的成员,哪些属于子类对象中?

示例:

class Base
{
public:
    int m_A;
protected:
    int m_B;
private:
    int m_C; //私有成员只是被编译器隐藏了,但是还是会继承下去
};
​
//公共继承
class Son :public Base
{
public:
    int m_D;
};
​
void test01()
{
    cout << "sizeof Son = " << sizeof(Son) << endl;//16,父类所有非静态成员都会被子类继承下去
}
​
int main() {
​
    test01();
​
    system("pause");
​
    return 0;
}

利用工具查看:

打开工具窗口后,定位到当前CPP文件的盘符

然后输入: cl /d1 reportSingleClassLayout查看的类名 所属文件名

效果如下图:

结论: 父类中私有成员也是被子类继承下去了,只是由编译器给隐藏后访问不到

9.4 继承中构造和析构顺序

子类继承父类后,当创建子类对象,也会调用父类的构造函数

问题:父类和子类的构造和析构顺序是谁先谁后?

示例:

class Base 
{
public:
    Base()
    {
        cout << "Base构造函数!" << endl;
    }
    ~Base()
    {
        cout << "Base析构函数!" << endl;
    }
};
​
class Son : public Base
{
public:
    Son()
    {
        cout << "Son构造函数!" << endl;
    }
    ~Son()
    {
        cout << "Son析构函数!" << endl;
    }
​
};
​
​
void test01()
{
    //继承中 先调用父类构造函数,再调用子类构造函数,析构顺序与构造相反
    Son s;
}
​
int main() {
​
    test01();
​
    system("pause");
​
    return 0;
}

总结:继承中 先调用父类构造函数,再调用子类构造函数,析构顺序与构造相反

9.5 继承同名成员处理方式

问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?

  • 访问子类同名成员 直接访问即可

  • 访问父类同名成员 需要加作用域

示例:

class Base {
public:
    Base()
    {
        m_A = 100;
    }
​
    void func()
    {
        cout << "Base - func()调用" << endl;
    }
​
    void func(int a)
    {
        cout << "Base - func(int a)调用" << endl;
    }
​
public:
    int m_A;
};
​
​
class Son : public Base {
public:
    Son()
    {
        m_A = 200;
    }
​
    //当子类与父类拥有同名的成员函数,子类会隐藏父类中所有版本的同名成员函数
    //如果想访问父类中被隐藏的同名成员函数,需要加父类的作用域
    void func()
    {
        cout << "Son - func()调用" << endl;
    }
public:
    int m_A;
};
​
void test01()
{
    Son s;
​
    cout << "Son下的m_A = " << s.m_A << endl;
    cout << "Base下的m_A = " << s.Base::m_A << endl;
​
    s.func();//直接调用 调用的是子类中的同名成员
    s.Base::func();//调用父类中的同名成员
    //如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类中的所有同名成员函数
    s.Base::func(10);//调用父类中的成员 重载
​
}
int main() {
​
    test01();
​
    system("pause");
    return EXIT_SUCCESS;
}

总结:

  1. 子类对象可以直接访问到子类中同名成员

  2. 子类对象加作用域可以访问到父类同名成员

  3. 当子类与父类拥有同名的成员函数,子类会隐藏父类中同名成员函数,加作用域可以访问到父类中同名函数

9.6 继承同名静态成员处理方式

问题:继承中同名的静态成员在子类对象上如何进行访问?

静态成员和非静态成员出现同名,处理方式一致

  • 访问子类同名成员 直接访问即可

  • 访问父类同名成员 需要加作用域

示例:

class Base {
public:
    static void func()
    {
        cout << "Base - static void func()" << endl;
    }
    static void func(int a)
    {
        cout << "Base - static void func(int a)" << endl;
    }
​
    static int m_A;
};
​
int Base::m_A = 100;
​
class Son : public Base {
public:
    static void func()
    {
        cout << "Son - static void func()" << endl;
    }
    static int m_A;
};
​
int Son::m_A = 200;
​
//同名成员属性
void test01()
{
    //通过对象访问
    cout << "通过对象访问: " << endl;
    Son s;
    cout << "Son  下 m_A = " << s.m_A << endl;
    cout << "Base 下 m_A = " << s.Base::m_A << endl;
​
    //通过类名访问
    cout << "通过类名访问: " << endl;
    cout << "Son  下 m_A = " << Son::m_A << endl;
    //第一个“::”代表通过类名的方式访问,第二个“::”代表访问父类作用域下的数据
    cout << "Base 下 m_A = " << Son::Base::m_A << endl;
}
​
//同名成员函数
void test02()
{
    //1、通过对象访问
    cout << "通过对象访问: " << endl;
    Son s;
    s.func();//自己的fun()
    s.Base::func();//父类的func()
    //2、通过类名的方式访问
    cout << "通过类名访问: " << endl;
    Son::func();
    Son::Base::func();
    //出现同名,子类会隐藏掉父类中所有同名成员函数,需要加作用域访问
    Son::Base::func(100);
}
int main() {
​
    //test01();
    test02();
​
    system("pause");
​
    return 0;
}

总结:同名静态成员处理方式和非静态处理方式一样,只不过有两种访问的方式(通过对象 和 通过类名)

9.7 多继承语法

三种权限的区别:

  • public:可以被任意实体访问

  • protected:只允许本类及子类的成员函数访问

  • private:只允许本类的成员函数访问

C++允许一个类继承多个类

语法:class 子类 :继承方式 父类1 , 继承方式 父类2...

多继承可能会引发父类中有同名成员出现,需要加作用域区分

C++实际开发中不建议用多继承

示例:

class Base1 {
public:
    Base1()
    {
        m_A = 100;
    }
public:
    int m_A;
};
​
class Base2 {
public:
    Base2()
    {
        m_A = 200;  //开始是m_B 不会出问题,但是改为m_A就会出现不明确
    }
public:
    int m_A;
};
​
//语法:class 子类:继承方式 父类1 ,继承方式 父类2 
class Son : public Base2, public Base1 
{
public:
    Son()
    {
        m_C = 300;
        m_D = 400;
    }
public:
    int m_C;
    int m_D;
};
​
​
//多继承容易产生成员同名的情况
//通过使用类名作用域可以区分调用哪一个基类的成员
void test01()
{
    Son s;
    cout << "sizeof Son = " << sizeof(s) << endl;
    //当父类中出现同名成员,为了避免二义性,需要加作用域区分
    cout << s.Base1::m_A << endl;
    cout << s.Base2::m_A << endl;
}
​
int main() {
​
    test01();
​
    system("pause");
​
    return 0;
}

总结: 多继承中如果父类中出现了同名情况,子类使用时候要加作用域

9.8 菱形继承

菱形继承概念:

两个派生类继承同一个基类(两个类有一个共同的父类)

又有某个类同时继承者两个派生类(这两个类又有一个共同的子类)

这种继承被称为菱形继承,或者钻石继承

典型的菱形继承案例:

菱形继承问题:

  1. 羊继承了动物的数据,驼同样继承了动物的数据,当草泥马使用数据时,就会产生二义性。

  2. 草泥马继承自动物的数据继承了两份,其实我们应该清楚,这份数据我们只需要一份就可以。

示例:

class Animal
{
public:
    int m_Age;
};
​
//继承前加virtual关键字后,变为虚继承
//此时公共的父类Animal称为虚基类
class Sheep : virtual public Animal {};
class Tuo   : virtual public Animal {};
class SheepTuo : public Sheep, public Tuo {};
​
void test01()
{
    SheepTuo st;
    st.Sheep::m_Age = 100;
    st.Tuo::m_Age = 200;
    //菱形继承中,两个父类拥有相同的数据,需要加作用域区分
    cout << "st.Sheep::m_Age = " << st.Sheep::m_Age << endl;
    cout << "st.Tuo::m_Age = " <<  st.Tuo::m_Age << endl;
    //这份数据只要有一份就可以了,菱形继承导致数据有两份,浪费资源
    //利用虚继承 解决菱形继承的问题
    cout << "st.m_Age = " << st.m_Age << endl;
}
​
​
int main() {
​
    test01();
​
    system("pause");
​
    return 0;
}

总结:

  • 菱形继承带来的主要问题是子类继承两份相同的数据,导致资源浪费以及毫无意义

  • 利用虚继承可以解决菱形继承问题

S32DS3.5图形化配置实战:从零构建S32K144通信接口工程 本文详细介绍了如何使用S32DS3.5图形化配置工具从零构建S32K144通信接口工程。通过实战演示引脚配置、时钟树设置、SPI接口搭建等关键步骤,帮助开发者快速掌握NXP S32K系列开发技巧,提升嵌入式开发效率。特别针对S32DS3.5版本的新特性进行了深度解析,包括智能代码生成和调试优化方法。 阅读详情

相关推荐

记录汇川:自由口通信-梯形图

最常见的就是MODBUS通信协议,指令主要通过RS232和RS485端口进行报文发送,所以通信报文格式可以选择MODBUS RTU通信格式或MODBUS ASCII通信格式。255---Y10-Y17:ON(1111 1111)指令进行报文的发送与接收,但是报文内部的数据格式不是由主站PLC决定, 而是由。修改从站一个保持寄存器数据。修改从站多个保持寄存器数据。读取从站的输出信号状态。读取从站的输入信号状态。读取从站保持寄存器数据。读取从站输入寄存器数据。

m0_61837027的博客 4913

9.【C++进阶】继承

本文深入探讨C++继承机制的核心概念与实现细节。主要内容包括:1)继承的定义与访问控制规则,重点分析protected成员和三种继承方式(public/protected/private)带来的权限变化;2)基类与派生类间的赋值转换规则,强调派生类到基类的切片机制;3)继承中的名称隐藏现象及作用域处理;4)派生类默认成员函数(构造/拷贝构造/赋值/析构)的实现要点,特别指出构造函数必须显式调用基类构造,析构函数会自动调用基类析构等特点。通过代码示例展示了继承的实际应用,为深入理解面向对象编程中的类层次复用提

E_han的博客 1032

【DRAM存储器四】DRAM存储器的架构演进-part1

详述以提升吞吐量为目标的DRAM架构变化

highman110的博客 1247

【C++进阶(八)】C++继承深度剖析

本篇文章主要讲解了C++继承相关概念和定义,以及继承后父子类函数的一些特性,最后讲了菱形继承和虚拟继承的相关内容!

杭电码农-NEO的博客 1898

手把手实现STM32+ESP8266+原子云服务器+手机APP应用——第三节-编写STM32程序实现STM32+ESP8266+原子云服务器+手机APP互相通信—远程数据传输及控制灯

接上一篇,本节使用原子云服务器。编写STM32程序实现STM32+ESP8266+原子云服务器+手机APP互相通信—远程数据传输及控制灯。使用的硬件包括:STM32F103(任意其他款系列也可以的)、正点原子ATK-ESP8266、LED灯。实现编写STM32程序代码来传输单片机数据到原子云服务器和手机APP进行显示,同时通过手机APP和原子云服务器可以远程控制单片机,例如本节实现远程点/灭灯,以此可以扩展开发更多的功能。本专栏本系列的相关文章可查看下面链接:

嵌入式阿齐Archie 8412

通用抓取————6D位姿估计

这意味着算法在没有物体的先验知识(如 CAD 模型)的情况下,依然能够通过神经网络捕捉物体的外观、形状和几何特征,生成相关的 6D 位姿估计。通过输入物体类别的描述,算法能够推断出该类别物体的位姿和尺度,无需特定物体的 CAD 模型。在这个坐标空间中,物体的位姿和尺度都是已知的,基于这个标准化表示,算法可以对输入图像中的物体进行 6D 位姿和尺寸的估计。○优势: ICP 是一种非常有效的位姿优化算法,特别适合精细调整物体的位姿,确保最终估计的位姿与真实物体的点云或模型高度一致。

具身机器人和通用AI 2377

C++进阶-1-单继承、多继承、虚继承

C++中的继承是一种重要的面向对象编程特性,使得代码的组织和结构变得更加清晰。在设计类结构时,应根据项目需求和复杂性,合理选择单继承或多重继承等。

小王爱吃月亮糖的博客 1897

Linux内核编程(十三)Input输入子系统

Input 子系统是 Linux 内核中专门为输入设备设计的一个子系统,它提供了一个通用的框架来管理各种输入设备,如键盘、鼠标、触摸屏、游戏手柄等。这个子系统的主要目的是简化和规范化输入设备驱动的开发,同时提高驱动的通用性和兼容性。(1)输入设备:如键盘、鼠标、触摸屏、游戏手柄等,它们是用户与计算机进行交互的主要方式。(2)输入设备驱动的复杂性:传统上,为每种输入设备编写驱动都需要创建文件、进行硬件初始化、实现文件操作函数集和处理中断等。每种设备的驱动可能都有许多重复性的工作。

qq_1033275663的博客 2865

c++进阶-继承01

继承,定义,格式,作用域问题(隐藏)

2402_87779153的博客 1012

AI编程工具深度对比:Cursor、Copilot、Trae与Claude Code,2025年开发者该如何选择?

2025年AI编程工具市场已形成四大主力阵营:Cursor(AI原生IDE)、GitHub Copilot(行业标准)、Trae(中国免费方案)和Claude Code(终端交互)。核心差异体现在技术能力(代码生成准确率85%-95%)、智能体协作程度和上下文处理能力(8K-200K tokens)。用户体验方面,Trae对中文支持最佳且免费,Copilot企业集成强,Cursor平衡易用与功能,Claude Code适合高阶开发者。实际测试显示,不同工具在原型开发、算法实现等场景各有优势

fudaihb的博客 6496

MATLAB与ROS联合仿真——实例程序搭建思路

MATLAB与ROS联合仿真——实例程序搭建思路

慕羽★的博客 5227

C++——模板进阶、继承

模板进阶、继承的讲解

二哈的博客 1897

Tableau学习教程(万字保姆级教程)​​​​​​

​Tableau学习教程(保姆级教材,学不会私信留言来找我) 从BI系统开发的角度来学习tableau工具,更学会报表开发的流程 内含学习使用数据源,tableau打包工作簿,可直接提取使用 ​...

小菜菜的博客 6万+

C++之继承与多态(含模版进阶)

非类型模版参数,模版特化,继承,多态

2302_81120572的博客 1039

visio安装包

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C++继承

C++继承

Wzs040810的博客 2100

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【C++进阶】继承

C++进阶的第一篇文章,帮助大家理解继承,下面会更新多态

m0_60338933的博客 514

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C++进阶之继承

上面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。这就是继承关系的基本定义格式。很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。

JYXCZYH的博客 1009

【C++进阶九】继承和虚继承

继承是代码复用的一种手段,子类继承父类就能使用父类中的变量比如我们同时定义student类和teacher类二者有大量的相同信息,因此可以把共同信息提取出来单独形成一个类string sex;int age;int height;只用在实现student类和teacher类时继承person类即可class Student : public Person//继承protected:int _stuid;//学号class Teacher : public Person//继承。

2201_75570391的博客 1230

【C++】继承

目录 1. 概念 2. 定义 2.1. 使用格式 2.2. 继承方式与限定修饰符 3. 基类和派生类对象赋值转换 (public继承) 4. 继承中的作用域 5. 子类类的默认成员函数 6. 继承与友元 7. 静态成员 8. 菱形继承和虚继承 8.1 菱形继承 8.2 虚继承(virtual) 8.3 虚继承解决数据冗余和二义性的原理 9. 继承总结、继承与组合 9.1总结 9.2 继承与组合 1. 概念 继承(inheritance)机制是面向对象程序设..

Edward_Asia的博客 9561

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

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

BinaryWiker的博客 878

【C++高阶】C++继承学习手册:全面解析继承的各个方面

当我们踏上C++编程的旅程时,继承无疑是一个无法回避且至关重要的概念。作为面向对象编程的三大特性之一,继承不仅让我们能够创建出层次清晰、结构合理的代码,还极大地提高了代码的可重用性和可维护性。在本文中,我们将一起深入探讨C++继承的奥秘,从基础概念到高级应用,逐步揭开它的神秘面纱

EterNity_TiMe_的计算机学习之路 2449

C++——继承

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

头秃中。。。。。 2878

【CPP】类与继承

父类,如果当前类的子类是多继承就会影响到子类,将当前类的子类中重复的当前类的父类部分合二为一,所以说虚继承关系到3个具有父子关系的类。发现了吗,平板电脑因为既继承了笔记本电脑,又继承了手机,所以其中包含了两个计算机的特性,这就产生了数据冗余和二义性的问题。在以上的例子中我们称反恐精英为玩家的子类,玩家为反恐精英的父类,反恐精英继承自玩家这个父类。简单来说单继承就是只有一个"继承链"的继承方式,类似于链表,每个类的父节点都是唯一的。标签,所有的底层全都是开放的,导致子类可以很轻松地使用到父类底层的所有东西。

2302_79981653的博客 1428

9、C++继承

本章带领大家学习C++继承,了解继承方式和继承需要注意的事项。

如是牛 1113

【C++ 进阶】继承

【C++ 进阶】继承

旋律 | 话语 | 色彩 | 情景 1276

C++:继承

本篇博客作为C++:继承的知识总结。继承机制是面向对象程序设计使代码可以复用的最重要的手段,他允许程序员在保持原有类特性的基础上进行拓展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,是类设计层次的复用。public:protected:// 名字int _age;// 年龄protected:string id;// 学号在上述示例中,Studend类继承Person类,Studend类被称为派生类/子类,Person类被称为基类/父类。

li209779的博客 959
上一篇: 《C++进阶--8.运算符重载》
下一篇: 《C++进阶--10.多态》
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿!=程序员

感谢来过,感谢有你!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值