文章目录 一、抛出/捕获多个类型异常对象 1、抛出/捕获多个类型异常对象 2、操作弊端 3、完整代码示例 二、异常类的继承层次结构 1、抛出子类异常对象/捕获并处理父类异常对象 2、完整代码示例抛出子类异常对象/捕获并处理父类异常对象 自定义的异常类,可能存在继承结构, 也就是说在同一个try-catch代码块中,如果需要拦截和处理多个异常时, 如果这些异常都继承相同的父类,只需要拦截一个父类异常即可, 本篇博客中,讨论抛出/捕获的异常类存在继承结构的情况; 一、抛出/捕获多个类型异常对象 1、抛出/捕获多个类型异常对象 定义一个函数,传入一个in...

文章目录 一、cin输入流对象简介 1、常用的iostream类型的输入/输出流对象 2、cin输入流对象 3、cin常用api简介 4、cin从控制台接收键盘输入数据 一、cin输入流对象简介 1、常用的iostream类型的输入/输出流对象 iostream头文件供了输入/输出流功能,借助该iostream类型对象可以方便地与控制台进行交互;如:读取控制台数据,输出信息/错误信息/调试日志到控制台; 常用的iostream类型的输入流对象:iostream头文件中有以下4种常用输入/输出流对象; cin:标准输入流,该对象用于从标准输入流(控制台)...

文章目录 一、cin.getline()函数 1、cin.getline()函数 2、代码示例cin.getline()函数 3、cin.getline()函数输入字符超过所需字符个数(输入缓冲区数据截取) 一、cin.getline()函数 1、cin.getline()函数 cin.get()函数不能接收空格字符,如果输入的字符中存在空格,则空格之后的数据直接被丢弃; 如果想要从标准输入流中读取空格字符,就需要使用cin.getline()函数; cin.getline()函数,用于从标准输入流(键盘)中读取一行字符串,cin.getline()函数...

文章目录 一、抛出/捕获多个类型异常对象 1、标准异常类 2、标准异常类继承结构 3、常用的标准异常类 二、自定义异常类继承std::exception基类 1、自定义异常类继承std::exception基类 2、完整代码示例自定义异常类继承std::exception基类 一、抛出/捕获多个类型异常对象 1、标准异常类 在C语言中,提供了一系列的"标准异常类", 这些"标准异常类"都继承了std::exception基类, 在标准库中,抛出的异常,都是标准异常类,都是std::exception类的子类; 2、标准异常类继承结构 标准异常...

文章目录 一、函数指针语法 1、函数名直接调用函数 2、定义函数指针变量 3、使用typedef定义函数类型 4、使用typedef定义函数指针类型 二、完整代码示例 一、函数指针语法 1、函数名直接调用函数 定义一个函数,如下函数的类型是int(int,int); intadd(intx,inty){ printf("x+y=%d\n",x+y); returnx+y; } 直接调用函数:该函数的函数名add就是函数地址,直接调用add函数,运行该函数; //1.直接调用 //直接调用add函数,运行该函数 //函数名add就是函数地址 ...

文章目录 一、函数类型和函数指针类型 1、函数三要素 2、函数类型 3、函数指针类型 4、函数类型重命名 二、代码示例函数类型重命名 1、代码分析 2、完整代码示例 一、函数类型和函数指针类型 1、函数三要素 函数原型有三个重要要素: 函数名称:使用标识符为函数命名;用来标识函数的名称,要求符合标识符的命名规则,并且要有意义; 参数列表:函数的输入形参列表;包含函数的输入参数,参数列表中可以没有参数,也可以有多个参数;参数列表的类型和个数会影响函数的返回值类型; 函数返回值:函数体执行的返回结果,没有返回void;函数执行后返回的数据类型,可以是任意...

文章目录 一、普通函数与函数模板的调用规则类型匹配 1、类型匹配 2、代码示例类型匹配 二、普通函数与函数模板的调用规则显式指定函数模板泛型类型 1、显式指定函数模板泛型类型 2、代码示例显式指定函数模板泛型类型 一、普通函数与函数模板的调用规则类型匹配 1、类型匹配 上一篇博客【C】泛型编程②(函数模板与普通函数区别)中,分析了函数参数类型匹配下的普通函数与函数模板的调用规则; 为函数模板重载了普通函数,普通函数有指定的类型; //使用template关键字声明函数模板 //告诉C编译器开始使用泛型编程 //定义的T是泛型类型 //声明了多个...

文章目录 一、函数模板与普通函数区别 1、函数模板与普通函数区别 2、代码示例函数模板与普通函数区别 一、函数模板与普通函数区别 1、函数模板与普通函数区别 函数模板与普通函数区别:主要区别在于它们能够处理的数据类型数量和灵活性; 自动类型转换: 函数模板不允许自动类型转化 普通函数能够进行自动类型转换 参数/返回值数据类型: 普通函数只接受特定类型参数 函数模板可以接受任何类型的参数 灵活性: 普通函数对于不同的数据类型参数需要单独定义 函数模板只需要定义一个函数,就可以接收任何数据类型的参数; 语法不同: 普通函数直接定义返...

文章目录 一、函数指针做函数参数 1、使用函数指针间接调用函数 2、函数指针做参数 3、函数指针类型的本质 4、函数指针做参数意义 二、代码示例函数指针做函数参数 一、函数指针做函数参数 1、使用函数指针间接调用函数 在上一篇博客【C】函数指针③(函数指针语法|函数名直接调用函数|定义函数指针变量|使用typedef定义函数类型|使用typedef定义函数指针类型)中,最后一个示例,使用typedef定义函数指针类型如下: //int(int,int)函数指针类型重命名为pFun_add //该类型变量可以直接接收函数名(函数地址) typedefin...

文章目录 一、C编译器原理 1、gcc编译器简介 2、C/C编译器编译过程 3、gcc编译器各阶段命令 ①预处理Pre-Processing(预处理器) ②编译Compiling(编译器) ③汇编Assembling(汇编器) ④链接Linking(链接器器) 4、gcc编译器与g编译器的区别 5、gcc/g编译器常用命令选项 二、分析模板函数代码汇编文件 1、编译模板函数代码汇编文件 2、分析模板函数代码汇编文件 3、模板函数代码汇编文件分析总结(重要) 在前面几篇博客 【C】泛型编程③(函数模板与普通函数调用规则|类型匹配|显式指定函数模板泛型类型) 【...

文章目录 一、数组概念 1、数组语法 2、数组首元素地址和数组地址 二、定义数组类型 1、定义数组类型语法 2、代码示例定义数组类型 三、指针数组类型 1、定义指针数组类型语法 2、直接定义指针数组类型变量语法 3、代码示例定义指针数组类型 一、数组概念 1、数组语法 数组语法: typearrayName[size]; type是数组元素类型; arrayName是数组名称; size是数组中元素个数; 数组示例:数组元素类型是int,数组名称是array,数组元素个数为5; intarray[5]; 声明数组时,还可以进行初始...

文章目录 一、Java语言中的properties配置文件 二、使用properties配置文件 三、完整代码示例 1、Java代码 2、properties配置文件 3、执行结果 一、Java语言中的properties配置文件 Java语言中,properties配置文件是一种用于存储应用程序配置信息的文本文件; properties配置文件通常用于配置应用程序的各种参数; properties配置文件是由一系列键值对组成的,每个键值对都表示一个配置项; 每个配置项由一个键值对组成,键值对之间使用等号"="分隔; properties配置文件,文件名一...

文章目录 一、普通函数与函数模板的调用规则类型自动转换 1、函数模板和重载函数 2、类型自动转换 3、代码示例类型自动转换 二、普通函数与函数模板的调用规则类型自动转换+显式指定泛型类型 1、类型自动转换+显式指定泛型类型 2、代码示例类型自动转换+显式指定泛型类型 一、普通函数与函数模板的调用规则类型自动转换 1、函数模板和重载函数 定义了函数模板,该函数模板可以接收任意类型的参数T,但是要求这两个参数类型T和返回值类型T必须是相同的; //使用template关键字声明函数模板 //告诉C编译器开始使用泛型编程 //定义的T是泛型类型 //声明...

文章目录 一、函数模板简介 1、函数模板概念 2、函数模板意义 二、函数模板语法 1、函数模板定义语法 2、函数模板调用语法 三、函数模板代码示例 1、代码示例 2、执行结果 四、函数模板代码示例声明多个泛型的情况 1、代码示例 2、执行结果 一、函数模板简介 1、函数模板概念 在C语言中,泛型编程的核心就是函数模板和类模板; 函数模板FunctionTemplate 函数模板概念: 建立一个"通用函数",不指定该函数的函数返回值类型和函数参数类型, 仅使用"虚拟类型"代表上述两种类型, 该"通用函数"就是"函数模板"; ...

文章目录 一、纯虚函数和抽象类 1、纯虚函数 2、纯虚函数语法 3、抽象类和实现 二、完整代码示例 一、纯虚函数和抽象类 1、纯虚函数 纯虚函数:在C语言中,"纯虚函数"是特殊类型的虚函数,"纯虚函数"在父类中声明,但是没有实现; 抽象类:"纯虚函数"的作用是将父类变为"抽象类",该类不能被实例化,不能创建类的实例对象; 继承抽象类必须实现纯虚函数:任何从"抽象类"派生出来的子类都必须提供"纯虚函数"的实现; 父类中的"纯虚函数"为其若干子类提供了一个公共界面,用于接口的封装/设计,软件的模块划分; 2、纯虚函数语法 纯虚函数语法: 函数前...

文章目录 一、vptr指针初始化问题 1、vptr指针与虚函数表 2、vptr指针初始化时机 3、构造函数中调用虚函数没有多态效果 4、代码示例 构造函数的作用就是创建对象,构造函数最后一行代码执行完成,才意味着对象构建完成,对象构建完成后,才会将vptr指针指向虚函数表; 如果在构造函数中调用虚函数,则没有多态效果; 一、vptr指针初始化问题 1、vptr指针与虚函数表 "虚函数表"由C编译器负责创建与维护,被virtual关键字修饰的虚函数,会自动被C编译器存储到"虚函数表"中,类中会自动添加一个"vptr指针"成员变量指向虚函数表; 2、vpt...

文章目录 一、验证指向虚函数表的vptr指针是否存在 1、虚函数表与vptr指针由来 2、虚函数类与普通函数类对比多出了vptr指针的大小 对比定义了虚函数的类与没有定义虚函数的类的大小,其它成员都相同,定义了虚函数的类多出了4字节,多出的4字节就是vptr指针占用的内存空间; 一、验证指向虚函数表的vptr指针是否存在 1、虚函数表与vptr指针由来 "虚函数表"由C编译器负责创建与维护,被virtual关键字修饰的虚函数,会自动被C编译器存储到"虚函数表"中; 虚函数表创建:在类中使用virtual关键字声明虚函数时,C编译器会自动为该类生成"虚函...

文章目录 一、重载、重写、重定义概念 1、重载Overloading 2、重写Overriding 3、重定义Redefinition 一、重载、重写、重定义概念 1、重载Overloading "重载"英文名称Overloading"函数重载"; "重载"是在同一个类中对函数或操作符进行多次定义; 这些函数或操作符在参数类型或数量上有所不同;也就是参数列表不同; 返回值并不作为函数重载的判定标准; 特别注意: 函数重载必须是在同一个类中进行的; 子类无法重载父类的函数,如果子类函数名和参数列表与父类相同,那是重写Overriding; 编译器在编译...

文章目录 一、虚析构函数 1、构造函数不能是虚函数 2、析构函数可以是虚函数 3、虚析构函数语法 4、虚析构函数意义 二、代码示例虚析构函数 1、代码示例没有使用虚析构函数导致子类析构函数无法调用 2、代码示例使用虚析构函数正确示例 一、虚析构函数 1、构造函数不能是虚函数 构造函数不能定义为虚函数,不能使用virtual关键字修饰; 如果要创建一个子类的实例对象,需要从该子类的最上层的父类开始,沿着继承路径,逐个调用构造函数; 场景说明:A类是基类,B类继承A类,C类继承B类; 如果要创建C类的实例对象,需要从最顶层的父类A类开始,先调用A的构造...

文章目录 一、C联编概念 1、联编引入 2、链接属性(内部链接|外部链接) 3、联编(C语言)与链接(C语言) 4、静态联编 5、动态联编 二、多态实现原理联编与virtual关键字 一、C联编概念 1、联编引入 "联编"Linkage指的是将程序模块和代码互相关联的过程,将不同源文件中的同名函数或变量进行链接; 在C语言中,每个函数或变量都有一个链接属性,该链接属性决定了该函数或变量是否可以在其他源文件中使用; 联编是通过声明函数或变量的链接属性进行控制; 如果一个函数或变量具有外部链接属性,则可以在其他源文件中使用该函数或变量; 如果一个函数或变...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~