C++
皮卡丘~何
这个作者很懒,什么都没留下…
展开
-
C++11多线程实现生产者消费者
生产者消费者生产者消费者是典型的多线程模型。单生产者-单消费者#include <iostream>#include <mutex>#include <condition_variable>#include <queue>using namespace std;class Queue{public: void put(int val) { // lock_guard<mutex> lock(mtx); uniqu原创 2020-05-23 13:58:43 · 749 阅读 · 0 评论 -
new和delete浅析以及与malloc和free区别的简总
new和deletenew/delete是C++动态开辟内存运算符,malloc和free是C库函数实现的动态开辟内存的。new/deletenew和delete其实也是重载函数,其底层也是调用malloc和free包括new数组和delete数组也是重载new[] 和 delete[] 运算符。也可以自己实现new和delete的重载函数。那么new单个元素delete单个元素,new数组,delete[]数组到底有什么区别的,混用到底有什么问题,下面我们使用代码来说明问题// 重载new和ne原创 2020-05-20 15:43:19 · 151 阅读 · 0 评论 -
虚基类和虚继承&菱形继承
虚基类和虚继承虚继承就是继承方式被virtual修饰的继承。虚基类就是虚继承的基类就叫虚基类。class A{private: int a;public: A() { cout << "A()" << endl; }};class B: virtual public A // 虚继承{public: B() :A() { cout << "B()" << endl; }private: int b;};如上代码中B原创 2020-05-17 15:36:28 · 278 阅读 · 0 评论 -
实现一个简单的STL容器 -- vector
实现一个简单的STL容器 --> vector实现了容器容器的空间配置器,迭代器,和基本函数方法。#include <iostream>using namespace std;// 空间配置器template <typename T>struct Myallocator{ T* allocate(size_t size) // 开辟内存 { ...原创 2020-02-29 22:18:55 · 277 阅读 · 0 评论 -
C++ STL容器
STL 容器顺序容器vector向量容器类模板实现,使用时需要实例化,底层数据结构:动态开辟的数组,每次以原来空间大小的2倍方式扩容。接口名称使用用法功能描述时间复杂度push_backpush_back(val)末尾添加元素0(1)insertinsert(it,val)迭代器位置添加元素0(n)pop_backpop_back()...原创 2020-02-28 23:31:35 · 240 阅读 · 0 评论 -
函数调用堆栈过程
函数调用堆栈过程示例代码int sum(int a ,int b){ int tmp = 0; tmp = a+b; return tmp;}int main(){ int a = 10; int b = 20; int ret = sum(a,b); cout<<"ret:"<<ret<<...原创 2020-02-27 23:29:18 · 269 阅读 · 0 评论 -
C++11 智能指针
智能指针智能指针就是对裸指针的封装。实现了裸指针的 *解引用运算符重载,->运算符重载等指针的基本操作。智能指针出现原因 – 裸指针使用裸指针可能会忘记释放资源,导致资源泄漏(内存泄漏问题)。同一资源可能被多次释放,导致释放野指针,程序崩溃。裸指针的释放写在代码后面,但是中间代码因为某些原因使得程序崩溃,然后资源未被释放。代码运行异常,释放资源的代码没有被运行。智能指...原创 2020-02-26 23:57:02 · 186 阅读 · 0 评论 -
C++设计模式~观察者模式
设计模式~观察者模式(观察者模式(Observer patten)、观察者-监听者模式、发布-订阅模式)主要关注的是对象之间的通信对象的一对多的关系,也就是多个对象都依赖一个对象,该对象状态发生改变时,其他对象都能及时够接收到相应的通知。就是多个对象将自己关注的时间注册到某个对象,这个对象只负责关注事件是否发生,如果某个事件发生,通知对应的对象,其他对象可以去做其他事情,等待自己的事件发...原创 2020-02-24 22:44:38 · 78 阅读 · 0 评论 -
C++设计模式~工厂模式
设计模式~工厂模式工厂模式工厂模式是典型的继承多态。【继承多态】工厂模式封装了对象的创建,即用户不逼自己调用产品的构造函数,是要通过相应的函数接口即可。工厂模式的分类简单工厂(Simple Factory)工厂方法(Factory Method)抽象工厂(Abstract Factory)简单工厂#include <iostream>#include <...原创 2020-02-24 13:44:38 · 62 阅读 · 0 评论 -
C++设计模式~单例模式
设计模式~单例模式单例模式单例即该类只能实例化一个对象。单例模式的构造函数私有化,拷贝构造,赋值运算符重载函数可直接delete。需要一个静态函数接口,返回唯一静态实例对象。单例模式的分类饿汉式单例模式:唯一的实例对象是在main函数开始前就已经在数据区了。懒汉式单例模式:唯一的实例对象在第一次调用获取实例对象时才构造对象。饿汉式单例模式class Singleton{...原创 2020-02-24 13:14:16 · 131 阅读 · 0 评论 -
C++ -- 继承和多态
继承继承的本质和原理本质代码的复用,基类提供所有派生类的公共函数接口,派生类也可以有自己特定的成员。在基类中给所有派生类提供统一的虚函数接口,让所有派生类重写,方便实现多态类与类之间的关系组合:一部分的关系,一个类的对象是另一个类的成员继承:一种的关系,一个类是另一个类的派生类。继承方式可见继承中,无论是什么继承方式基类的私有成员在派生类中都是不可访问的,并且访问权限...原创 2020-02-23 23:54:43 · 142 阅读 · 0 评论