浅谈C++(5)——继承

C++之继承 继承的概念及定义 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。 这就比如我们设计一个学生管理系统,学校中有老师,学生,工作人员等,我们要记录他们的信息比如学生有电话,姓名,地址,学号等这些信息。 class Student { str 阅读详情

继承





(一)继承的概念及声明

引出:

        有时候,两个或多个类中,成员及成员函数有大量的重复,就造成了人力物力的浪费,效率低下。那有没有一种软件重用机制呢?当新创建一个类时,如果新类的内容在已有的类中已经大量存在了,那能不能将已有的类作为基础,再加上新的内容以提高效率呢? c++中的继承机制就是为了解决这样的问题。

        一个新类从已有的类中获得其已有的特性,这种现象就叫做类的继承。换种角度,从已有的类中产生一个新类,成为类的派生。一个类只从一个基类派生,成为单继承。一个派生类有两个或多个基类成为多重继承。

声明派生类的一般形式为:

 class 派生类名 : 继承方式   基类名
 {
 } 

例如:

class A
{
}
class B:public A
{
}

(二)派生类成员的访问属性

派生类对基类的继承方式分为:
(1) public (公用继承)
(2)proteated (保护继承)
(3)private (私有继承)

1.公用继承

        在定义派生类时将继承方式指定为public的,称为公用继承,定义出的派生类叫做公用派生类,其基类称为公用基类。

访问属性:

  1. 在派生类内部,可以访问基类的公用属性和保护属性的成员,不能访问私有属性的成员。
  2. 派生类实例化出是对象,可以访问派生类的公有属性成员以及基类的公有属性成员。
 class Base
{
public:
	void fun()
	{ cout << "Base::fun()" << endl; }
protected:
	void list()
	{cout << "Base::list()" << endl;}
private:
	void print()
	{cout << "Base::print()" << endl;}
private:
	int b;
};
class D :public Base  //公有继承
{
	void d()
	{
		fun();
		list();
		//print();//编译不通过,只能访问公有成员和保护成员
	}
};
int main()
{
  	D d;
	d.fun();
	//d.list();
	//d.print(); //  编译不通过,能将父类的信息继承,但是对象只能访问公有数据
   return 0;
}

需要注意的是:

        在继承时,派生类会将基类的全部信息继承过来,只是有一些成员可以访问,有一些成员不可以访问。接下来说的保护继承和私有继承也是如此。

2.保护继承

        在定义派生类时将继承方式指定为protected的,称为保护继承,定义出的派生类叫做保护派生类,其基类称为保护基类。

访问属性:

  1. 在继承时,会将基类的所有成员属性全部变为保护属性。
  2. 在派生类内部,可以访问基类的公用属性和保护属性的成员,不能访问私有属性的成员。以此派生类为基类新派生出来的类,可以访问基类的公用属性和保护属性的成员。
  3. 派生类实例化出是对象,可以访问派生类的公有属性成员,但不能访问基类成员。
 class Base
{
public:
	void fun()
	{ cout << "Base::fun()" << endl; }
protected:
	void list()
	{cout << "Base::list()" << endl;}
private:
	void print()
	{cout << "Base::print()" << endl;}
private:
	int b;
};

class S :protected Base
{
	void s()
	{
		fun();
		list();
		//print();//编译不通过,只能访问公有成员和保护成员
	}	
	
int main()
{
  	S s;
	/*s.fun();
	s.list();
	s.print();*///都编译不通过,保护继承,会将父类的所有信息继承过来,但全都变为保护属性,对象不能访问
   return 0;
}

3.私有继承

        在定义派生类时将继承方式指定为private的,称为私有继承,定义出的派生类叫做私有派生类,其基类称为私有基类。

访问属性:

  1. 在继承时,会将基类的所有成员属性全部变为私有属性。
  2. 在派生类内部,可以访问基类的公用属性和保护属性的成员,不能访问私有属性的成员。以此派生类为基类新派生出来的类,也不能访问基类的公用属性和保护属性的成员。
  3. 派生类实例化出是对象,可以访问派生类的公有属性成员,但不能访问基类成员。
 class Base
{
public:
	void fun()
	{ cout << "Base::fun()" << endl; }
protected:
	void list()
	{cout << "Base::list()" << endl;}
private:
	void print()
	{cout << "Base::print()" << endl;}
private:
	int b;
};

class M :private Base
{
	void m()
	{
		fun();
		list();
		//print();//编译不通过,只能访问公有成员和保护成员
	}
};
int main()
{
  	M m;
	/*m.fun();
	m.list();
	m.print();*///都编译不通过,私有继承,会将父类的所有信息继承过来,但全都变为私有属性,对象不能访问
   return 0;
}

(三)派生类的构造函数和析构函数

        基类的构造函数是不能集成的,在声明派生类时,派生类并没有将基类的构造函数继承过来,以此。对基类成员的初始化也要由基类来承担。所以在设计派生类的构造函数时,不仅要考虑派生类新增成员的初始化,也要考虑基类成员的初始化。

1.简单派生类的构造函数

        这里指的是只有一个基类,并且只有直接派生类,没有间接派生类。一般形式为:

派生类函数构造名(总参数列表):基类构造函数名(基类参数表)
{派生类新增成员初始化}

比如;

class student
{
public:
   student(int n, string nam, char s)
   {
     num=n;
     nam=name;
     sex=s;
   }
private:
   int num;
   string name;
   char sex;
}

class student1
{
public:
  student1(int n, string nam, char s,int a,strint add):student(n,nam,s)
  {
    age=a;
    addr=add;
  }
private:
   int age;
   string addr;
}

2.有子对象的派生类的构造函数

        类中的数据成员除了标准数据类型(int,char等),还可以是一个类,也就是内嵌一个类,成为子对象,即对象中的对象。
        比如,在上述student1中,除了增加add和addr,还可以增加一个班长项,班长也属于学生,也属于student类,那么这时构造函数的形式为:

派生类函数构造名(总参数列表):基类构造函数名(基类参数表),子对象名(子对象参数表)
{派生类新增成员初始化}

比如:

class student
{
public:
   student(int n, string nam, char s)
   {
     num=n;
     nam=name;
     sex=s;
   }
private:
   int num;
   string name;
   char sex;
}

class student1
{
public:
  student1(int n, string nam, char s,int n1, string nam1, char s1,int a,strint add):student(n,nam,s),monitor(n1,nam1,s1)
  {
    age=a;
    addr=add;
  }
private:
   int age;
   string addr;
   student monitor;
}

应当注意:

  1. 如果在派生类中没有定义构造函数或者定义了不带参数的构造函数。那么在派生类中可以不用写基类的构造函数,因为系统会自动生成。
  2. 如果在派生类中定义了带参数的构造函数。那么就必须在派生类中显式的定义基类的构造函数。

3.派生类的析构函数

        派生时,同样不能继承基类的析构函数。也需要通过派生类的析构函数去调动基类的析构函数。在派生类中需要自己定义析构函数来对派生类的所有成员进行清理工作。基类的清理工作仍由基类的析构函数完成。在执行派生类的析构函数时,系统会自动调用基类的析构函数。

        调用析构函数的顺序刚好和调用构造函数的顺序相反。

(四)多重继承

1.声明多重继承的方法

        如果已经声明了A类、B类、C类。可以声明多重派生类D:

 class D:public A,privatet B,protected C
 {  D新增加的成员  }

        上述D是多重继承的派生类,它一公用继承的方式继承了A,以私有继承的方式继承了B,以保护继承的方式继承了C。

2.多重继承的构造函数

格式:

 派生类构造函数名(总参数表):基类1构造函数(参数表),基类2构造函数(参数表),基类3构造函数(参数表)
 {派生类中新增成员函数初始化}

比如:

class A
{
public:
  A(int a):_a(a)
  {}
private:
  int _a;
}
class B
{
public:
  B(int b):_b(b)
  {}
private:
  int _b;
}
class C
{
public:
  C(int c):_c(c)
  {}
private:
  int _c;
}

class D
{
public:
  D(int a,int b,int c,int d):A(a),B(b),C(c)
  {
     _d=d;
  }
private:
  int _d;
}

3.多重继承引起的二义性问题

在这里插入图片描述

        如图:B、C继承了A,D又继承了D,假设所有的成员都是公用属性,所有的继承方式都是公用继承。通过前面的介绍我们知道,B、C在继承A的时候,都会继承一份A的成员,换句话说,在B和C中,都存在了一个a成员。而D又继承了B和C,那么,当D实例化的对象,在访问成员a的时候,是通过B访问呢?还是通过C访问呢?这就是我们说的多重继承引起的二义性问题。

class A
{
public:
  int _a;
}
class B:public A
{
}
class C:public A
{
}

class D:public B,public C
{
}
int main()
{
    //d.a=10;  ???
}

        那遇到这种问题的时候,我们该怎么解决呢?

  1. 可以加作用域限定符
 int main()
{
    d.::B a=10;
}

2.虚基类

4.虚基类

        c++提供虚基类,使得在继承间接共同基类时(就类似上述所说情况),只保留一份成员。

声明方法:

class A
{……};
class B:virtual public A
{……};
class C:virtual public A
{……};
class D:public B,public C
{……};

注意:虚基类并不是在声明基类时声明的,而是在声明派生类时,指定的继承方式时声明的。

        虚继承底层实现原理与编译器相关,一般通过虚基类指针和虚基类表实现。当B和C继承A时,会在B和C的空间生成一个虚基类指针(占用一个指针的存储空间,4字节)和虚基类表(不占用类对象的存储空间)(需要强调的是,虚基类依旧会在子类里面存在拷贝,只是仅仅最多存在一份而已,并不是不在子类里面了);当虚继承的子类被当做父类继承时,虚基类指针也会被继承。
        实际上,vbptr指的是虚基类表指针,该指针指向了一个虚基类表,虚表中记录了虚基类与本类的偏移地址;通过偏移地址,这样就找到了虚基类成员,而虚继承也不用像普通多继承那样维持着公共基类(虚基类)的两份同样的拷贝,节省了存储空间。

        有关虚基类以及虚基表的详情请访问以下链接:
https://blog.youkuaiyun.com/qq_41885826/article/details/86566643

文章系本人原创,转载请注明作者和出处。

Zemax显微镜设计:从物镜到目镜的完整光学系统优化 本文详细介绍了使用Zemax进行显微镜光学系统设计的完整流程,从物镜到目镜的优化技巧。通过实战案例和关键参数设置,帮助读者掌握数值孔径、视场角等核心概念,实现高分辨率显微镜设计。文章特别强调了系统级优化和公差分析的重要性,为科研和工业检测提供可靠的光学解决方案。 阅读详情

相关推荐

手把手教你给H3C MSR路由器配置4G/5G上网(保姆级图文教程)

本文提供H3C MSR路由器配置4G/5G上网的保姆级图文教程,涵盖硬件准备、运营商适配、命令行配置、多运营商策略优化及信号故障排查等全流程。通过实测数据和典型场景分析,帮助用户快速实现4G/5G模块的部署与优化,提升网络稳定性和业务连续性。

weixin_28745067的博客 434

类的多层派生

#include<iostream> using namespace std; #include<string> class student{ public: student(int n,string nam){ num=n; name=nam; } void display(); protected: int num; string name; }; class student1:public student{ public: student1(int n,.

m0_47575628的博客 288

MiniMax H3本地部署与ComfyUI集成实战:从环境配置到提示词优化

文本到视频生成是AI内容创作领域的关键技术,它基于扩散模型等深度学习原理,将自然语言描述转化为连贯的动态视觉序列。这项技术的核心价值在于大幅降低了视频制作的门槛,为短视频创作、概念可视化、教育内容生成等场景提供了高效工具。在实际工程实践中,成功部署和运行此类模型,如近期备受关注的MiniMax H3,需要精准处理环境配置、显存优化和提示词工程等环节。其中,解决“CUDA error: no kernel image is available”等版本兼容性问题,以及针对“8G显存”等有限资源进行参数调优,是确

weixin_33674976的博客 478

继承与派生

基类是派生类的抽象,派生类是基类的实现。单继承(single inheritance):派生类从一个基类继承 多继承(multiple inheritance):派生类从多个基类继承派生类的申明形式: class 派生类名:继承方式 基类名 { 新增的成员 }; 基类名前面有public的称为“公用继承(public inheritance)”。 private(私有的),pr

没有梦想,和咸鱼有什么区别! 429

Rocky Linux 9 远程桌面配置全攻略:从零搭建XRDP服务(含防火墙设置)

本文提供了在Rocky Linux 9上从零开始配置XRDP远程桌面服务的完整指南。详细介绍了系统准备、XRDP服务安装、防火墙与SELinux安全设置、多用户性能优化以及多平台客户端连接实测。重点解决了使用Windows远程桌面协议(RDP)连接Rocky Linux时常见的配置难点与安全问题,帮助用户获得稳定高效的图形化远程访问体验。

vodka的博客 646

C# 上位机开发完全指南:从零开始构建工业控制系统

摘要: 本文详细介绍了使用C#开发工业自动化上位机系统的关键技术和方法。上位机作为工业控制的核心枢纽,负责与PLC、传感器等设备通信,实现数据采集、监控和控制。开发基于C#的上位机需掌握Windows Forms/WPF界面设计、Modbus/OPC等通信协议,以及SQL数据库存储。文章分步讲解了环境搭建、界面设计、设备通信(以Modbus和TCP/IP为例)、数据存储与展示等关键环节,并强调多线程优化与异常处理的重要性。通过C#和.NET技术栈,开发者能够构建高效稳定的工业控制系统,未来可扩展至云平台和物

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1013

对构造函数的形参:其中使用char型变量和数组时,会出错,对出错类型的总结和解决方法

对构造函数的形参:其中使用char型变量和数组时,会出错,对出错类型的总结和解决方法。 例题参考《c++程序设计(第三版)》谭浩强编著,第256页和第250页

诗子黎的博客 3207

RM3100应用笔记驱动程序SPI接口

PNI磁传感器套件RM3100磁传感器套件由2个Sen-XY-f(pn13104)地磁传感器,1个Sen-Z-f(pn13101)地磁传感器和MagI2C(pn13156)控制芯片组成,能够实现三维空间的磁场大小测量。

AIoT技术栈的博客 4923

C++ pta编程题

6-2 类的声明和成员函数的实现–this指针 (10 分) 本题要求声明和实现一个Car类,包括实现其成员函数。 要求如下: 类和函数接口定义: 声明一个Car类; 三个public成员函数: (1) disp_welcomemsg(),无返回类型; (2) get_wheels(),返回一个Car类的数据成员m_nWheels的值; (3) set_wheels(int),用指定的形参初始化数据成员m_nWheels的值; 一个私有数据成员m_nWheels,整数类型,代表汽车的车轮数量。 其中,成员

xihuankangkang的博客 3501

Unreal5从入门到精通之Landscape地形系统

虚幻引擎 5 (UE5) 能够利用其强大的地形编辑工具套件创建大规模的地形世界。使用地形工具可以创建身临其境的户外地形,这些地形经过优化,可在多种不同设备上保持可播放的帧速率。

TxNet 4141

SAP-ABAP:SAP信贷管理核心:CL_UKM_BUPA_FACTORY类完整解析与实践指南

SAP信贷管理核心类CL_UKM_BUPA_FACTORY解析 CL_UKM_BUPA_FACTORY是SAP信贷管理(UKM)模块的核心类,作为业务伙伴信贷数据的中央控制台,它提供: 统一入口:标准化实例化客户/供应商信贷对象 主要功能: 获取单条/批量业务伙伴数据 安全保存数据变更 封装底层数据访问逻辑 典型应用场景: 信贷主数据批量维护 自动化限额调整 订单信贷实时检查 性能优化建议: 使用批量方法替代循环单条处理 合理设置字段选择 实施缓存策略 该类通过简洁API简化复杂信贷操作,是SAP信贷管理开

baidu_35680696的博客 1208

c++:继承(超详解)

目录一:什么是继承二:继承的格式继承的总结:二:子类和父类(基类和派生类)1.子类和父类的相互赋值:2.同名的成员变量3.同名成员函数三:子类中默认的成员函数1.构造函数2.析构函数3.拷贝构造4.赋值运算符重载 四:单继承和多继承单继承: 多继承:菱形继承解决方法一:解决方法二:单继承和多继承的总结:定义:继承(inheritance)机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生的新类,称派生类(或子类),被继承的类称基类(或父类)

qq_62718027的博客 8万+

Python 爬虫实战:全球咖啡期货市场数据采集与分析全攻略

通过本项目,我们实现了对全球咖啡期货市场数据的采集、处理和可视化,为市场分析和决策支持提供了数据基础。未来,可以进一步结合机器学习和深度学习技术,对咖啡期货价格进行预测和建模,提高市场分析的准确性和效率。

2201_76125261的博客 394

浅译浅谈浅析effective C++(02)

这里要介绍分析的是effective c++中的条款02:尽量以const、enum、inline来替换#define 在写之前还是要先声明,本文只是浅谈浅析,必要的地方也只是潜译,本文可以当做是一个简单的总结,对于有些不愿意看英文原文或者觉得书籍太过冗长的朋友来说可以直接参阅我的总结,技术帝学术帝勿喷 ,谢谢。 #define是我们在C++中编写代码常用的手段,指定宏有时候可以很好的方便我们

sjm19901003的专栏 596

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

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

浅译浅谈浅析effective C++(01)

我们在学习C++中总是会忽略很多的细节,例如,在完成某些任务的时候,我们该选择“继承”还是"模板"?选择public继承还是private继承?选择成员函数还是非成员函数?何时才去让析构函数为virtual?当operator new分配内存的时候无法找到足够内存怎么办?这一系列的问题我们都没有仔细思考,而这正是小编一系列文章从effective C++体验到的一些总结。 一、C++简单回顾

sjm19901003的专栏 529

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

浅谈C与C++的不同(读经典书effective C++)

视C++为一个语言联邦(effective c++)。形容的很贴切,C++并不是一个带有一组守则的一体语言,它是由多个次语言组成的语言联邦,每个次语言都有自己的规约。 C++最开始的名称是C with classes,我们可以从这里理解c与c++的血缘关系,也可以感知到C++的发展轨迹。 c++是多重范型的编程语言,同时支持过程形式、面向对象形式、函数形式

laughter8的博客 921

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++ 难学?浅谈

问题原因为什么 C++ 精通难?语法复杂、细节多、需要底层知识、标准更新快C++ 环境包括哪些?编译器、调试器、构建工具、版本控制、性能分析工具如何精通 C++?系统学习、深入理解底层、大量实践、持续学习先学 C 语言学 C++ 基础语法学 STL 和标准库学模板和泛型编程学多线程和并发学编译器和调试工具实践项目(如网络编程、操作系统、游戏)

qq_41179365的博客 1866

Linux C++后端开发学习路线参考汇总

文章目录Linux C++后端开发学习路线参考汇总如何快速掌握C++?路线一(<6个月):知乎Milo Yip路线二(<1年):华中大守门员一、C++基础(3个月)二、计算机网络(1个月)三、操作系统(1个月)四、网络编程(1个月)五、数据结构与[算法]()及[刷题]()(2个月)六、mySQL数据库(7天~15天)七、[项目]()(2个月)总结路线三(<3年):编程指北正文一、后端/后台/服务器开发?二、后台开发都考察哪些?三、C/C++四、操作系统五、计算机网络六、网络编程七、系统级编

xmcy001122的专栏 7121

【C++继承中的相关内容】

主要内容: 1.继承的概念及定义 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元 6.继承与静态成员 7.复杂的菱形继承及菱形虚拟继承 8.继承的总计和反思 9.继承中常见的面试题 1.继承的概念及定义 1.1 继承的概念 继承机制是面向对象程序设计使代码可以复用的重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生...

weixin_43730061的博客 735

C++进阶:继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称子类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承是类设计层次的复用。假如我有两个类Student和Teacher,这两个类可能有些属性是相同的,比如它们都有名字,性别等等,但是它们也有一些特点是独有的,比如学生的学号,老师的职工号等等。

2301_81699364的博客 1323

C++之继承最详讲

目录 1.继承的概念 2.继承的定义 3.继承权限 3.1、子类以public方式继承父类 3.2、子类以protect方式继承 3.3、子类以private方式继承 3.4、class关键字没有给出继承方式默认的继承方式是私有的继承方式 3.5、struct关键字没有给出继承方式默认的继承方式是公共的继承方式 3.6、那么我们可以就此总结一下class和struct的区别 3.7、关于继承方式大总结 4.基类和派生类对象赋值转换 4.1、派生类对象可以赋..

weixin_45897952的博客 6977

C++面向对象三大特性之一------继承

C++这门作为面向对象的语言,继承这个特性可少不了,本篇博客内容丰富,介绍了很多部分,内容可能稍微有点难度和抽象,我给大家花了图,方便大家理解。接下来进入正片!!!正文开始继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

拾至名瑰的博客 748

【C++】继承

多继承是C++的一个坑~

学了就忘是正常现象 2796

C++中的继承

一.继承的概念及定义 发现问题:当我们编写一个类时,发现这个类与类外一个类的成员变量和成员方法相似,并且具有一定的包含关系时,我们编写的这两个类会有很多相似的地方。 比如: 1.1 继承的概念 继承机制是面向对象程序设计使代码可以复用的重要手段。它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生的类称为派生类。 继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承使类设计层次的复用。 ...

weixin_57023347的博客 6414

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

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

cdzg_zzk的博客 3047

C++继承[万字详解]

本文非常详细介绍了C++中的继承,包括继承的定义,介绍,方式。以及继承后派生类构造函数和析构函数的调用顺序,继承中的切片等问题,继承后静态成员,友元关系的变化,以及多继承中的菱形继承和菱形虚拟继承,对继承的一些总结。继承和组合的介绍以及关系.

weixin_47257473的博客 4452
上一篇: 攻克名企面试题,剑指心仪offer!——题目4 用栈实现队列
下一篇: 攻克名企面试题,剑指心仪offer!——题目5:字符串转整形数字
小凩
博客等级 码龄6年 75粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值