c++深度解析
文章平均质量分 80
哇风
欢迎大家一起来学习 c/c++ ,数据结构,嵌入式相关课程
交流qq群:499984459
展开
-
C++ 之std::function()及 std::bind() 学习总结
1. std::function介绍类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::function对象是对C++中现有的可调用实体的一种类型安全的包裹(我们知道像函数指针这类可调用实体,是类型不安全的)。通常std::function是一个函数对象类,它包装其它任意的函数对象,被包装的函数对象具有类型为T1, …,原创 2021-01-20 17:06:58 · 208 阅读 · 0 评论 -
错误 未知重写说明符 问题
在用多文件编译来写一个程序时,遇到了一个错误:错误C3646“name”: 未知重写说明符于是我就去某搜索引擎上搜索一下前辈们对这个错误的心得综合网上的经验我总结了一下出现这个错误有可能的几种情况:1、头文件之间的循环引用比如:在a.h中包含了b.h并创建了一个b类对象,然后在b.h中又包含了a.h。解决方法:检查工程的头文件包含关系,防止头文件的循环引用。2、分号问题...原创 2020-04-16 08:12:58 · 11209 阅读 · 8 评论 -
c++深度解析17 类模板
c++中的类模板 1.以相同的方式处理不同的类 2.在类声明前使用template进行标识 3。<typename T> 用于说明类中使用的泛指类型T原创 2019-04-27 20:15:37 · 462 阅读 · 0 评论 -
【c++深度问题分析16】函数模板的概念和意义
泛型编程的概念、 不考虑具体数据类型的编程方式,对于Swap数值交换函数可以考虑下面的泛型写法 Void Swap( T & a , T& b){ T t = a; a = b; b = t;}swap 泛型写法中的T 不是一个具体的数据类型,而是泛指任意的数据类型c++ 中泛型编程...原创 2019-02-17 11:21:31 · 162 阅读 · 0 评论 -
【c++深度解析15】 经典问题解析
关于动态内存分配:1.new 和 malloc 的区别是什么? new 关键字是c++的一部分malloc是由c库提供的函数new以具体类型为单位进行内存分配malloc 以字节为单位进行内存分配new 在申请内存空间时可以进行初始化(自动调用构造函数)malloc仅根据需要申请定量的内存空间 关于虚函数:构造函数是否可以成为虚函数?答:构造函数不可能成...原创 2019-02-12 01:03:01 · 161 阅读 · 0 评论 -
【c++深度解析14】c++中的抽象类和接口
面向对象中的抽象类1.可用于表示现实世界中的抽象概念2.是一种只能定义类型,而不能产生对象的类3.只能被继承,并重写相关函数4.直接特性是相关函数没有完整的实现 c++中通过纯虚函数实现抽象类 满足下面条件的c++类则称为接口:1.类中没有定义任何的成员变量2.所有的成员函数都是公有的3.所有的成员函数都是纯虚函数4.接口是一种特殊的抽象类 ...原创 2019-02-11 02:09:58 · 144 阅读 · 0 评论 -
【c++深度解析 13】 多态对象模型
从c++对象模型中知道,一个类的成员变量和成员函数在内存中是分开存放的,成员函数存放于代码段 ,成员变量 类结构体方式顺序存放的,(存在字节对齐问题)那么继承的对象模型又是怎样的了?继承的对象模型子类是父类的成员变量后加入子类新增的成员得到的 多态的对象模型c++多态的实现原理:当类中声明虚函数时,编译器会在类中生成一个虚函数表,虚函数表是一个存储成员函数地址的数据结构...原创 2019-02-11 02:00:22 · 184 阅读 · 0 评论 -
【c++深度解析12】 c++对象模型分析
class 中的成员函数与成员变量是分开存放的每个对象有独立的成员函数所有对象共享类中的成员函数下面看如下一段代码:#include <iostream>#include <string>using namespace std;class A{ int i; int j; char c; double d;pub...原创 2019-02-10 17:16:34 · 164 阅读 · 0 评论 -
【c++深度解析11】多态的概念和意义
在同名覆盖引发的问题中,父类对象指向子类对象直接将其退化为父类对象,导致没有达到函数重写期望的结果,那么程序怎样根据实际的对象类型判断如何调用重写函数了,c++中的多态就可以解决该问题c++语言直接 支持多态:通过virtual关键字来进行支持,被virtual声明的函数叫做虚函数多态的概念:静态联编: 在程序的编译期间就能够确定具体的函数调用,如:函数重载动态联编:在程序的实...原创 2019-02-10 01:19:09 · 239 阅读 · 0 评论 -
【c++深度解析10】同名覆盖引发的问题
父子间的赋值兼容1.子类对象可以当做父类对象使用(兼容性)2.子类对象可以直接初始化父类对象3.父类指针可以直接指向子类对象4.父类引用可以直接引用子类对象 当使用父类指针(引用)指向子类对象时1.子类对象退化为父类对象2.只能访问父类中定义的成员3.可以直接访问被子类覆盖的同名成员特殊的同名函数子类中可以重定义父类中已经存在的成员函数,这种重定义发生在...原创 2019-02-08 18:50:47 · 290 阅读 · 0 评论 -
【c++深度解析9】父子间的冲突
问题一: 子类是否可以定义父类中的同名成员?如果可以,如何区分?如果不可以,为什么?答:1。子类可以定义父类中的同名成员。 2.子类中的成员将隐藏父类中的同名成员。 3. 父类中的同名成员依然存在于子类中 4. 通过作用域分辨符(::) 访问父类中的同名成员 问题二: 子类中定义的函数,是否能重载父类中的同名函数?答:我们首先回忆重载的...原创 2019-02-04 22:57:54 · 190 阅读 · 0 评论 -
【c++深度解析6】隐式类型转换
标准数据类型之间会进行隐式类型转换转换规则如下:(小范围转换为大范围) 下面通过一段代码来说明隐式类型转换的危害:#include <iostream>#include <string>using namespace std;int main(){ short s = 'c'; unsigned int ui = 100...原创 2019-01-17 02:59:22 · 198 阅读 · 0 评论 -
【c++深度解析 5】 前置操作符和后置操作符重载
问题 1.下面的代码有区别吗?为什么? i++; // i的值作为返回值,i自增1 ++i; // i 自增1,i的值作为返回值 对于基础类型的变量: 前置++的效率 和后置++的效率基本相同(编译器进行了优化)对于类类型的对象: 前置++的效率高于后置++,尽量使用前置++操作符提高程序效率问题2. c++ 操...原创 2019-01-17 02:13:48 · 211 阅读 · 0 评论 -
【c++深度解析3】逗号操作符
问题1.在c++逗号操作符可以重载吗,重载逗号操作符有意义吗?答: 在c++中可以重载逗号操作符,在工程开发中不要重载逗号操作符,那是无意义的下面我们复习下逗号操作符:1.逗号操作符(,)可以构成逗号表达式2.逗号表达式用于将多个子表达式连接为一个表达式3.逗号表达式的值为最后一个表达式的值4.逗号表达式中的前n-1个子表达式可以没有返回值5.逗号表达式按照从左向右的顺...原创 2019-01-17 00:49:10 · 310 阅读 · 0 评论 -
【c++深度解析8】类型转换函数
c++类中可以定义类型转换函数,用于将类对象转换为其他类型语法规则如下:operator Type(){ Type ret; // ... return ret;} 但是类型转换函数中1无法抑制隐式的类型转换函数调用,导致代码可读性不强,工程中 大多以 Type toType( )的公有成员函数代...原创 2019-01-20 22:06:19 · 114 阅读 · 0 评论 -
【c++深度解析7】隐式类型转换二
转换构造函数:参数满足如下条件时的构造函数为转换构造函数:1.有且仅有一个参数2.参数是基本类型3.参数是其他类型下面看下如下的代码:#include <iostream>#include <string>using namespace std;class Test{ int mValue;public: Test() ...原创 2019-01-20 21:39:42 · 142 阅读 · 0 评论