小伟的C++日常
文章平均质量分 80
独语天涯
C/C++ Linux
展开
-
C++设计模式
讲起设计模式,首先得谈及面对对象的七个原则面对对象的七大原则开放封闭原则:对扩展开放,对修改关闭,模块应该在尽量不修改源代码的情况下扩展。 单一职责原则:一个类只做一件事。 依赖倒换原则:程序要依赖于抽象接口,而不是具体实现,降低客户与实现模块之间的耦合。 迪米特原则,也称最小知识原则:高内聚,低耦合。 接口隔离原则:客户端不要依赖它不需要的接口上,类间的依赖关系建立在最小的接口上。 合成复用原则:尽量使用合成,尽量不要使用继承。 里氏代换原则:子类不能去修改父类的内容。面对对象的设计原创 2021-03-31 19:45:56 · 119 阅读 · 2 评论 -
STL——容器及容器适配器
Listlist是序列荣容器,它允许在序列的任何位置执行固定O(1)时间的插入和删除操作,由双向链表实现,但不能通过位置直接访问元素,需要用迭代器,而需要一些额外的内存空间来保持与其他元素相关联的链接信息。使用需要添加头文件#include<list>1. 定义与初始化list<int> list1;//创建空的listlist<int> list2(2);//创建含有两个元素的listlist<int> list3(4,2);//创建含有4个元素的原创 2021-03-30 20:32:03 · 113 阅读 · 0 评论 -
智能指针
auto_ptr这个智能指针已经被C11标准弃用,C98中它的作用是:动态分配对象以及在对象不需要时自动执行清理。auto_ptr在构造时获取某个对象的所有权,在析构时释放该对象,所以我们不用担心它在何时释放该对象,也不用担心发生异常产生内存泄露。但要注意:一个萝卜一个坑,两个auto_ptr不能同时拥有同一个对象。不能用auto_ptr来管理数组。构造函数的explicit关键字有效阻止从一个“裸”指针隐式转化为auto_ptr类型。auto_ptr的拷贝构造和赋值函数强调“所有权的转移原创 2021-03-28 21:23:53 · 109 阅读 · 0 评论 -
继承和多态
继承(inheritance) 机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础.上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构。体现了由简单到复杂的认识过程。多态性(polymorphism) 多态性是考虑在不同层次的类中,以及在同一类中,同名的成员函数之间的关系问题。函数的重载,运算符的重载,属于编译时的多态性。以虚基类为基础的运行时的多态性是面向对象程序设计的标志题。函数的重载,运算符的重载,属于编译时的多态性。以虚基类为基原创 2021-03-27 14:51:03 · 2360 阅读 · 2 评论 -
类和对象
面对对象的思想从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。封装的思原创 2021-03-26 20:51:15 · 185 阅读 · 2 评论 -
C/C++的区别
1、new和malloc区别:1、new是关键字,malloc是函数2、new返回值类型安全,malloc返回值类型不安全3、new不需要计算开辟内存大小,malloc需要4、new开辟失败会抛出异常,malloc开辟失败会返回NULL。5、new可以初始化6、new开辟的内存在自由存储区域,malloc在堆上开辟。7、new用delete释放,malloc用free释放。为什么不能直接操作堆内存,而是用指针间接操作?堆内存没有变量名,堆内存的所有权交给上一个有变量名的指针来管理。2、函原创 2021-03-25 15:22:38 · 61 阅读 · 0 评论 -
递归
定义:自己直接或者间接调用自己注意: 避免递归次数太多(出现栈溢出)或者死递归原理:例:求n的阶乘int Fac(int n){ if(n==0 || n==1) return 1; else return Fac(n-1)*n;//(n-1)!}最适合用递归的问题汉诺塔,将n个盘子从a,通过b移到cvoid Move(char x,char y)//模拟移动...原创 2020-03-16 20:14:54 · 81 阅读 · 0 评论 -
2021-01-23
小伟的C+日常C++与线程之间擦除的火花我的能力让我自己有自知之明,我的文章可能有很多不是我自己的东西,还有些可能就是对于老师告诉我的知识的一些誊抄,我的日的是为了可以温故,而我自己对于这个方面的理解,可能不是很多,我只能说尽我所能。首先,我们聊起线程,肯定要先理解线程是个什么东西,这段是我在写这篇博文之前觉得自己可能不能很好的解释线程这个东西,所以,我选择了度娘,以下是我在知乎上照搬过来的,我认为很形象也很容易理解。作者:pansz链接:https://www.zhihu.com/questio原创 2021-01-23 21:32:52 · 78 阅读 · 0 评论 -
2021-01-24
小伟的C+日常C++与线程之间擦除的火花(二)上文说到了thread对象的一些函数,本文主要讲述一下互斥量以及上文匆忙未说的在线程里面的一些函数。sleep_for函数: 阻塞当前线程的执行,直至规定的时间结束后,也有可能比规定的时间长,因为调度或资源争议延迟。后面可以加上数字加时间单位,如2000ms,也可以加上固定的时间函数加数字:std::chrono::nanoseconds 纳秒std::chrono::microseconds 微秒std::chrono::milliseconds 毫原创 2021-01-24 22:27:05 · 108 阅读 · 1 评论 -
2021-01-30
小伟的C+日常C++与线程之间擦出的火花(三)今天说的是信号量有关的概念然后写出一个简单的生产者消费者模型。首先,谈及信号量,肯定要先知道信号量的概念:信号量是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。这是我在百度上搜索的关于信号量的定义。简言之,信号量,就是线程可用资源的数量,当一个线程要运行前,原创 2021-01-30 20:37:16 · 65 阅读 · 0 评论