C++二次整理
他们说快写一首情歌
这个作者很懒,什么都没留下…
展开
-
C++11中的bind绑定器和function函数对象
绑定器和函数对象bind1st/bind2nd简单用法bind1st/bind2nd底层实现bind1st/bind2nd简单用法#include <iostream>#include <vector>#include <algorithm>#include<functional>#include <ctime>using namespace std;/* 绑定器和函数对象(对象有小括号运算符重载函数) 1.C++ STL中原创 2021-02-12 12:35:34 · 188 阅读 · 0 评论 -
C++ STL标准模板库
STLstandard template libaray标准模板库函数对象standard template libaray标准模板库一、标准容器1.顺序容器vector 向量deque 双端队列list 链表2.容器适配器stack 栈queue 队列priority_queue 优先级队列3.关联容器无序关联容器 链式哈希表O(1)unordered_set 无序的单重集合unordered_map 无序的单重映射表unordered_multiset 无序的多重集合u原创 2021-02-03 09:19:42 · 136 阅读 · 0 评论 -
new和delete
new和delete深入理解new和delete的原理深入理解new和delete的原理原创 2021-01-14 16:28:50 · 73 阅读 · 0 评论 -
继承与多态
继承和多态综述继承的本质和原理综述 1.继承的本质和原理 2.派生类的构造过程 3.重载,覆盖,隐藏 4.静态绑定和动态绑定 5.多态vfptr和vftable 6.抽象类的设计原理 7.多重继承及问题 8.虚基类vbptr和vbtable 9.RTTI 10.C++四种类型强转继承的本质和原理#include<iostream>using namespace std;/* 继承的本质和原理 本质:代码的复用, 类和类之间的关系,组合和继承 组合:原创 2021-01-10 11:40:42 · 129 阅读 · 0 评论 -
运算符重载
运算符重载复数类重载复数类重载#include<iostream>using namespace std;/* C++运算符重载:使对象的运算表现得和编译器内置类型一致 模板代码,可以使得运算符执行类模板进行运算 template<typename T> T sum(T a,T b) { return a+b; //a+.(b) a.operator+(b) }*///复数类class CComplex{public: CComplex (原创 2021-01-09 20:16:25 · 98 阅读 · 0 评论 -
C++模板
C++模板理解函数模板非类型参数类模板理解函数模板#include<iostream>using namespace std;/* C++函数模板(开发库用,类型参数化) 优点:只用写一套代码实现逻辑即可,编译器没有减少工作,用户减少了工作 模板的意义:对类型也可以进行参数化 int sum(int a,int b){return a+b;} 仅仅对实参的值进行了参数化 函数模板 出现关键字template模板参数列表,函数模板不进行编译,不知道类型 模板的实例化原创 2021-01-08 11:31:51 · 95 阅读 · 0 评论 -
C++创建一个类的注意事项
C++面向对象内存对齐.和->的区别类和对象、this指针构造函数和析构函数深拷贝和浅拷贝内存对齐节省CPU在IO上的访问次数从理论上讲,对任何变量的访问都可以从任何地址开始,但是实际的计算机系统对基本类型数据在内存中的存放有限制,他们会要求这个元素首地址的值是4/8的倍数,大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存,我们将上述这些存取单位称为内存存取粒度,如果没有内存对齐机制,数据可以任意存放,一个int变量存原创 2020-12-11 13:41:20 · 289 阅读 · 0 评论 -
C++语法基础和关键字const
C++ 基础new/delete malloc/free引用和指针const指针和引用的结合函数重载 inline函数 参数带默认值的函数参数带默认值的函数inline内联函数函数模板new/delete malloc/free引用和指针const指针和引用的结合函数重载 inline函数 参数带默认值的函数参数带默认值的函数#include<iostream>using namespace std;/* 问题1:默认值为什么从右向左给 问题2:调用效率的问题 立即数原创 2020-12-02 11:51:11 · 109 阅读 · 0 评论 -
C++虚拟地址空间和编译过程
三块核心内容进程的虚拟地址空间内存划分和布局虚拟地址空间虚拟内存地址布局函数调用堆栈详细过程程序编译链接原理深入了解计算机系统程序员的自我修养进程的虚拟地址空间内存划分和布局虚拟地址空间任何的编程语言 产生两种东西:指令和数据产生在磁盘上的可执行文件将程序从磁盘上加载到内存当中 不可能直接加载到物理内存X86 32位 Linux环境下的 加载到内存Linux系统会给当前进程分配一个2^32次方大小的空间4G (虚拟地址空间) 它存在,你能看得见,他是物理的 它存在,你看不见,他是透明的原创 2020-11-18 16:27:46 · 538 阅读 · 1 评论 -
C/C++ 函数符号生成规则
C/C++ 函数符号生成规则C编译器函数名修饰规则_cdecl调用约定(C标准调用约定)_stdcall约定调用(windows标准调用约定)fastcall调用约定(快速调用约定)C++编译器函数名修饰规则_cdecl调用约定_stdcall调用约定fastcall调用约定_thiscall调用约定(类成员方法的约定)参数表类型代号类参数白开始标志函数符号是编译器在编译期间创建的一个字符串 用...原创 2019-12-07 22:57:25 · 888 阅读 · 0 评论 -
C++ /C动态开辟I行J列的动态数组 并释放空间
动态开辟并释放空间C语言实现C++ 实现C语言实现 int row; int col; scanf_s("%d", &row); scanf_s("%d", &col); int** p = (int**)malloc(sizeof(int) * row); printf_s("创建二维数组~\n"); for (int i = 0; i < row; +...原创 2019-12-07 21:14:49 · 231 阅读 · 0 评论 -
C++ 裸指针和智能指针
C++ 裸指针和智能指针裸指针的缺陷及实例演示忘记释放指针指向的资源代码逻辑过早结束 导致释放资源的代码执行不到代码运行过程中,代码发生异常了,直接出当前函数栈帧了通过裸指针,访问对象时,无法判断对象是否存活,还是已经析构掉了多个指针指向同一块内存释放导致的失效指针的问题智能指针的优势不带引用计数的智能指针auto_ptr裸指针的缺陷及实例演示忘记释放指针指向的资源class Menory...原创 2019-12-07 12:11:54 · 7155 阅读 · 1 评论 -
单例模式 C++
单例模式 C++特点懒汉式饿汉式多线程下的特点保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享懒汉式饿汉式多线程下的...原创 2019-12-03 09:31:10 · 123 阅读 · 0 评论 -
C和C++的区别
C/C++异同同同为本地编译型语言同为强类型语言异面向过程和面向对象C++支持带默认值参数的函数C++函数支持重载动态内存管理同同为本地编译型语言编译型语言: 直接编译成本地机器码 运行效率快 Go脚本语言 脚本解释器运行在本地操作系统上 Python Java PHP同为强类型语言强/静态类型语言:C/C++/Java 变量定义必须指定类型,定义后类型不能改变弱/动态类型语言:Py...原创 2019-11-18 14:29:42 · 161 阅读 · 0 评论 -
C++目录
C++ 目录C/C++ 区别C++类和对象代码编译模板编程运算符重载继承和多态异常处理STL标准库模板多线程编程MYSQL 关系型数据库重点汇总C/C++ 区别C++类和对象代码编译模板编程运算符重载继承和多态异常处理STL标准库模板多线程编程MYSQL 关系型数据库重点汇总...原创 2019-11-17 15:49:14 · 157 阅读 · 0 评论