自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

guotianqing的博客

人生如画,画如人生。

  • 博客(9)
  • 收藏
  • 关注

原创 设计模式之工厂模式(c++)

工厂模式顾名思义,工厂是制造产品的。在c++中,工厂模式也是制造产品的,只是这个产品是对象。c++中创建对象的方式有很多,如直接声明的方式创建栈上对象、使用new创建堆上对象等。而工厂模式主要用于创建堆上对象,属于创建型模式。为什么不使用new而要绕道使用一个工厂呢?原因如下:直接使用new会导致模块间的紧耦合,并产生编译时依赖,使用工厂方法可以避免编译时依赖,符合依赖倒置原则如果直...

2019-12-31 18:50:12 534

原创 c++11多线程编程同步——使用future和promise

简介在多线程编程中,需要数据共享,如一个线程需要使用另一线程运算产生的数据。涉及到异步编程时,有时需要线程间同步,如执行异步订阅消息时,当订阅消息的结果返回成功后,处理消息的线程才需要运行。以上场景的都可以使用std::future和std::promise实现。std::promise是可以存储类型T的值的对象,该值可以被另一线程的std::future对象获取,并提供了同步机制。...

2019-12-30 18:39:50 4716

原创 c++中智能指针使用小结

简介指针是c/c++中重要的概念,也因为指针,难倒了许多人。举个例子,对于malloc或new出来的内存,是在堆上分配的。那么从该内存分配完成的时刻开始,这块内存就由应用程序来管理了,包括使用和释放。c程序中很多与内存管理相关的bug,很大的一块就是忘记释放内存导致的内存泄漏,最终导致系统崩溃。可以说,c编程人员在内存管理上耗费了大量的时间和精力。c中只有指针,没有智能指针的概念。c++...

2019-12-28 12:54:20 956

原创 cmake入门实践

cmake与make/scons类似,cmake也用来管理工程。cmake是kitware公司及开源开发者在开发工具套件时的衍生品,目前是一个独立的开源项目,诞生于2001年,访问官网获取更多信息:www.cmake.org 。cmake的优缺点:跨平台,并可生成native编译配置文件。支持在Linux平台生成Makefile,在Apple平台生成xcode,在Windows平台生成...

2019-12-23 18:22:07 680

原创 switch与if-else-if区别与应用实践

相同及区别switch和if-else-if是c/c++中的两种分支语句,它们的功能基本相同,都是判断条件后执行相应的动作。当然它们也有区别,不然为什么同一件事情要用两种不同的方法来做呢?if-else if-else if-else语句:可以是任何条件语句、变量或者表达式运行时顺序检查所有的条件,直到匹配发生,执行语句并跳过后续switch case语句:只适用于待判断的条...

2019-12-23 16:18:09 1883

原创 c++中指针与引用的使用

先说结论使用指针的情况:存在不指向任何对象的可能需要在不同的时刻指向不同的对象使用引用:必须指向一个对象并且不会改变它的指向重载操作符时它们的异同相同点指针和引用的功能大致相同:间接引用其他对象不同点表面上看上去完全不同指针操作符为:* 和 ->,引用操作符为:.指针可以为空,引用任何情况下不能为空。下面的代码会导致未定义的行为:...

2019-12-17 12:03:26 350

原创 Effective c++ 读书笔记

说明学习语言本身是一回事,学习如何使用这种语言进行设计和高效编程是另一回事。这本书就是在有了一定的基础知识后,在实际项目开发和后续学习中的必读经典。它基于编程实际,以条款的形式描述了需要避开的坑和需要遵守的高效原则。读过《c缺陷与陷阱》的朋友,可能在读这本书时能找到当时相同的感觉。一口气读完了本书,余音绕梁,意犹未尽。重新翻阅本书,并作此记录,以供后续复习之用。主要内容习惯c+...

2019-12-16 19:17:00 243

原创 c++ 回调函数与std::function使用实例

理解回调实际项目中,经常有使用回调函数的需求,如:双方通信中,等待接收对方的数据并处理,如使用socket进行的TCP通信定时器事件,当定时器计时结束时,需要处理某任务信号的触发,需要执行某任务在同步编程中,需要启动一个专门的线程来阻塞监听并处理那些可能在未来发生的事件,而在异步编程中,只需要使用回调函数就可以了。在这种场景下,可以简单地理解为:我为某事件注册一个处理函数,当该事...

2019-12-12 16:47:36 11032

原创 c++中的Lambda表达式

Lambda表达式C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。相较于函数指针和函数符等函数对象,Lambda有以下优点:距离:定义与使用在同一个地方,方便查看、修改和调试简洁:可以给Lambda指定名称从而多次使用效率:函数指针一般不会被内联,因为它的地址可能会被使用功能:Lambda可访问作用域内任何动态变量Lamb...

2019-12-09 16:45:08 1325 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除