
c++学习
文章平均质量分 80
张三思
努力学习.
展开
-
cpp教程1-闲聊cpp11,14,17,20引入的有趣的东西
闲聊c++11,14,17,20引入的有趣的东西你为啥想聊这个问题呀?那你先说说你现在C++11经常用的特性呗?C++14有什么新东西?C++17有什么新东西?那你说说C++17都怎么了?还有吗?太有趣了,请继续吧。特性太多了,最后介绍两个重要的特性吧!C++20有哪些新特性呢?你为啥想聊这个问题呀?答:因为咱总要跟上时代的,不能太落伍,虽然我对此并不是很感兴趣,但是总归是要知道的。那你先说说你现在C++11经常用的特性呗?答:我觉得C++11有趣的特性有,lambda表达式,我经常用,还有就是模板原创 2021-07-31 02:50:40 · 28752 阅读 · 0 评论 -
最好的make学习笔记
目录什么是makefile基本命令格式make命令的执行编译与链接make工作流程通配符与变量控制语句内置的函数Makefile 的简单实例一个复杂的实例参考集合什么是makefileMakefile 文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个原创 2021-02-23 20:53:43 · 365 阅读 · 1 评论 -
cpp教程4-编程实战-一个通用c++字符串缓冲类的设计
一个通用字符串缓存类的设计最近在写一个 cpp server, 其中有用到设计一个缓存类, 然后我也是借鉴了其他大佬的思路, 从中学到了不少知识, 就在这里总结和分享一下自己的感受.一个缓存类的设计应该有哪些特性呢?在我们分析其有哪些特性前, 让我们先思考一个问题. 这个缓存类是用来干什么的?在我做的这个项目中, 这个缓存类是用来存放 http request 报文用的,我们是从 socket 中读取的数据, 然后放到这个容器中.我们不知道报文的长度, 所以缓存类需要能够自适应变长.一个缓存类原创 2021-02-02 21:12:28 · 547 阅读 · 1 评论 -
cpp教程5-张三思读博客 gdb调试详解 cpp程序调试
标题: gdb调试详解作者: lx青萍之末原文链接: https://blog.youkuaiyun.com/daaikuaichuan/article/details/89791255扩充: 张三思文章目录一、gdb调试简介及常用命令1、编译代码并启动gdb2、调试选项(1)查看源码(l)(2)设置断点(b)(3)运行程序(r)(4)执行下一句代码(n)(5)执行多句代码(c)(6)打印变量的值(p)(7)自动打印变量的值(display)(8)退出gdb(q)3、调试选项总结转载 2021-02-01 17:19:16 · 889 阅读 · 0 评论 -
cpp教程6-张三思读博客 using关键字
原文: https://blog.youkuaiyun.com/zxc024000/article/details/79438539扩充: 张三思C++using关键字看google某项目源码时,里面使用了很多using关键字。之前对using关键字的概念,一直停留在引入命名空间中。其实,using关键字还些其他的用途。引入命名空间using关键字最常用的,可能就是导入命名空间。using namespace std;using std::cout; 继承中的作用改变访问权限class B转载 2021-01-31 20:07:40 · 451 阅读 · 1 评论 -
cpp教程7-张三思评博客:C++11新特性快看-乱序优化版
标题: 【C++ Primer】C++11特性总结作者: lx青萍之末原文链接: https://blog.youkuaiyun.com/daaikuaichuan/article/details/79240196文章目录* 1、long long 类型* 2、列表初始化* 3、nullptr 空指针* 4、constexpr变量* 5、constexpr函数* 6、using类型别名* 7、auto类型指示符* 8、decltype类型指示符* 9、范围for语句* 10、尾置返回类型*原创 2021-01-31 13:45:03 · 586 阅读 · 0 评论 -
cpp教程8-编程实战-以自实现split为例讲解C++中的字符串操作
以自实现split为例讲解C++中的字符串操作C++字符串的操作是不太方便的, 我们来讲一下其基本操作,并实现一个自己的split函数字符串与数字的互相转换数字转stringstring并没有提供构造方法来直接数字转换成字符串, 比如 string(int), string(double) 之类的.头文件:string.hstd::to_string(int)std::to_string(long)std::to_string(long long)std::to_string(float)原创 2021-01-23 08:32:13 · 503 阅读 · 0 评论 -
cpp教程9-C++中的字符串操作
C++中的字符串操作C++字符串的操作是不太方便的,字符串与数字的互相转换数字转stringstring并没有提供构造方法来直接数字转换成字符串, 比如 string(int), string(double) 之类的.头文件:string.hstd::to_string(int)std::to_string(long)std::to_string(long long)std::to_string(float)std::to_string(double)std::to_string(lo原创 2021-01-22 20:59:18 · 450 阅读 · 1 评论 -
实践1-设计模式-可以扩展的cpp多线程单例模式
可以扩展的多线程单例模式单例模式真可谓非常出名了, 但是一般大家的探究仅仅止步于如何从多线程安全的角度来实现它.我今天在网友的智慧的基础上往前再走一步, 提出可以支持扩展的单例模式.在这篇文章中, 你将了解到4中单例模式, 它们层层递进. 它们分别是(1) 隐藏构造函数的基本单例模式(2) 支持多线程的单例模式(3) 使用模板支持扩展的借助 static 成员属性的单例模式(4) 使用模板支持扩展的借助 static 局部变量的单例模式最后两个方法是我本人想了三个小时摸索出来的, 我还没有看原创 2021-01-13 16:01:01 · 224 阅读 · 0 评论 -
阅读一本糟糕的翻译的书是什么感受?
阅读一本糟糕的翻译的书是什么感受?最近在读的一本书, 《C++并发编程实战》,Anthony Williams 著,此人是 boost组织的成员,C++标准委员会的成员,书应该是非常权威的了,但是中文译本,由***周全,梁娟娟,宋真真,许敏***几人翻译的,由***人民邮电出版社***出版的。翻译的人,前两人中国科学技术大学毕业的,第三人合肥工业大学毕业的,三个人都是该校的信息技术学院毕业的人,这四位作者都就职于中国人民银行合肥分行科技处。都是10年左右毕业的人,可以说是同事了,一起翻译一本书。英文版原创 2021-01-05 16:04:54 · 712 阅读 · 0 评论 -
cpp教程10-C++中的lambda
C++中的lamda看完C++中的lamda,感觉总体来说,不愧是 C++!一个lamda 都搞的可以玩出花来!!!下面我简单介绍一下lamda表达式在 c++ 中的语法。作为一个从 python 来的 c++ 人,我被C++的lamda 震惊了。入门体验以[]开头,lambda 语法可以生成一个临时的或者说匿名的函数对象,因此可以方便的支持函数式编程。不传参的版本[]{ //return 1; // 或者不return //也可以没有返回值 cout <&l原创 2021-01-05 10:47:48 · 502 阅读 · 0 评论 -
cpp教程11-手动实现自己的智能指针shared_ptr和 unique_ptr
背景智能指针是管理操作内存的重要手段现在我来实现两个重要的指针,分别是shared_ptr和 unique_ptr, 源代码代码和测试都有,代码中带有注释,因为时间关系,有空再补设计思路和原理吧。shared_ptr源代码//// Created by zxzx on 2020/10/17.//#ifndef ZZZ_SharedPtr_H#define ZZZ_SharedPtr_H#include <iostream>#include <memory>#原创 2020-12-31 18:30:35 · 670 阅读 · 0 评论 -
cpp教程12-张三思评博客-以右值为基础的转移构造和转移赋值
c++11新特性-以右值为基础的转移构造和转移赋值新特性的目的右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move Sementics) 和精确传递 (Perfect Forwarding)。它的主要目的有两个方面:消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。能够更简洁明确地定义泛型函数。左值与右值的定义C++( 包括 C) 中所有的表达式和变量要么是左值,要么是右原创 2020-12-30 18:16:57 · 397 阅读 · 0 评论 -
[读书笔记][C++并发编程实战]一个线程安全的队列的实现
背景我们都知道,线程之间是需要同步的,只有同步,才能保证共享的数据结构被有序的操作。在一个经典的生产者消费者模型中,有生产者,消费者,今天就参考 CCIA(c++ concurrency in action, C++ 并发编程实战)来实现以下生产者消费者模型。其中,核心是,我们必须写一个线程安全的队列。我们用的是互斥变元 mutex 以及 条件变量,以及 lock_guard 和 unique_lock 。以下就是代码://// Created by zxzx on 2020/12/29./原创 2020-12-29 17:37:36 · 364 阅读 · 1 评论 -
[读书笔记][effective C++]条款41-模板编程的隐式转换
正文面向对象编程总是以显式接口(explicit interfaces)和运行期多态(runtime polymorphism)来解决问题。例如 class Widget{ public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); void swap(Widget& othe转载 2020-12-29 09:39:33 · 226 阅读 · 0 评论 -
[读书笔记][effective C++]条款55-了解boost库
感受在条款55里, 作者告诉了我们几点关于boost库的知识.首先, boost 库是开源免费的C++库,由成熟而有经验的C++工程师, 而且是 C++ 标准委员会的很多成员所维护的一个库, 也是一个组织和社区.boost 库的东西可能会进入 C++ 标准库, boost 库是作为 C++ 标准库的预备役和试炼场.boost 库的同行评审是有序的, 严格的, 高标准的, 工业级水准的, 支持跨平台多个编译器的, 要想最后通过评审, 要反复修改雕琢.boost 库的官网是 www.boost.org原创 2020-12-27 21:13:43 · 129 阅读 · 0 评论 -
[读书笔记][effective C++]条款13-以对象管理资源
$KaTeX parse error: Expected '}', got 'EOF' at end of input: …00代码难度:代码量: $}感受在阅读第13章的时候, 我读到作者这么写, 以对象管理资源.最基本的资源是内存, 其次是很多其他的资源,比如socket, 比如连接池中的对象, 互斥锁mutex, 文件描述符扥等!!这些资源必须及时归还给计算机, 就好像你从图书馆借了一本书必须还给图书馆一样!那么, 类似于在 linux 里, 一切都是文件, 在C++里, 一切资源,原创 2020-12-27 21:05:00 · 115 阅读 · 0 评论 -
[c++]复用自己的代码
在我学习 C++ 的时候,我写了很多 demo 和 case.但是经常需要写重复的实例代码, 就很烦, 然后我就想怎么能够复用自己的代码呢?比如觉得这个类写的很好, 想经常用, 所以我需要把自己的代码模拟成库文件, 可以方便的 include 进来.C++的include 路径是这样的, 先在当前目录下找, 然后去系统目录下找.为了全局使用, 我们必须要把自己的代码放到系统目录下面.但是因为是我们自己的代码, 需要频繁修改, 为了方便用IDE打开, 我们需要在系统目录下面建立一个软链接.incl原创 2020-12-27 15:13:21 · 327 阅读 · 0 评论 -
[c++][多线程]多线程学习入门
开篇问题1.0 C++多线程应用的场景多线程如何共享资源呢?多线程如何同步?写一个多线程的生产者消费者,想队列中加数据,取数据(这里写的也是磕磕绊绊的,在面试官的提醒下写完了)多线程中的私有数据怎么保护(这里没明白,我觉得线程的私有数据不是独占的吗,应该不用保护吧)多数据节点多线程写的一致性保证?如何调整多线程的负载均衡?多线程模型有哪些?什么时候用多进程, 什么时候用多线程?如何调试多线程程序q多线程如何同步?同步靠一些高于线程本身的机制,比如进程内部,线程之间的信号量(用于进原创 2020-12-24 12:08:38 · 250 阅读 · 0 评论 -
[c++][内存管理]指针的用法
今天聊一聊普通指针和智能指针的用法指针是内存能管理的重要组成部分。传统指针new和delete运算符提供了一种比自动变量和静态变量更灵活的方法。它们管理了一个内存池,这在C++中被称为自由存储空间(free store)或堆(heap)。该内存池同用于静态变量和自动变量的内存是分开的。new和delete让您能够在一个函数中分配内存,而在另一个函数中释放它。因此,数据的生命周期不完全受程序或函数的生存时间控制。与使用常规变量相比,使用new和delete让程序员对程序如何使用内存有更大的控制权。然而原创 2020-12-21 23:25:18 · 183 阅读 · 0 评论 -
[c++][内存管理]从sizeof看C++对象模型
从sizeof看C++对象模型$KaTeX parse error: Expected '}', got 'EOF' at end of input: …度:代码难度:代码量: $}最近在学习C++,于是打算整理一些专题知识,梳理自己的学习成果。一来是回忆和整合,加深理解,再一个是希望大佬指点。今天说的是 sizeof 的话题。插一句话,我认为不管是否写的是专业相关,我的博客(或者说笔记)的特点是,充满思考和分析,结合自己对生活的观察,以一个普通的人视角来写,而非干巴巴的搬运别人的东西。目录原创 2020-12-21 11:20:54 · 136 阅读 · 0 评论 -
[c++][内存管理]malloc的底层原理分析
malloc的原理是什么呢?这就联系到操作系统课程上的内存管理那一章节了.那个时候, 那一章讲了很多抽象的理论, 比如最佳分配, 最小分配, 静态分配, 动态分配, 但是都是纸上谈兵.结合C语言里的malloc函数, 才能更好地理解.malloc功能的底层原理是什么呢?首先,记得,现在操作系统,是多道系统. 也就是说多个进程同时存在于内存中. 而他们又都使用了虚拟内存的概念.接着,在我们管理真正的物理内存的时候, 有一个基本的大前提是, 我们需要有一个数据结构来管理真实可用的剩余内存空间.(比如原创 2020-12-21 10:50:51 · 681 阅读 · 0 评论 -
[c++][内存管理]new和malloc的区别
一个是c语言里的关键字,一个是c++里的关键字.malloc分配一块内存, 需要指定内存大小, 返回一个分配好的内存指针.而news是一个运算符, 可以被重载, 它成功返回的也是一个指针.但这两者的指针,返回的类型是不一样的, malloc返回的是无类型的指针,需要转换, 而new则本身返回的是带有类型的指针, 它的语法是,new 加上类型的构造函数, 连起来解读的意思,就是new运算符先去找一块内存,或者接受一个内存地址, 接下来由构造函数对这块内存进行初始化.相比之下, malloc就原始的多,它原创 2020-12-21 10:05:04 · 126 阅读 · 0 评论 -
c++ virtual 关键字的解释
C++面向对象之virtual正文先从virtual说起面向对象的三大特征,封装,继承,多态。说到多态,就绕不开virtual。C++的多态又如此的不一样,它分为静态绑定和动态绑定,其中有一个非常重要的关键字,它就是virtual.C++中的virtual关键字修饰方法 约等于 Java中abstract关键字修饰方法。virtual,望文生义。虚拟的意思。它是用来修饰一个方法的,当编译器看到这个关键字,就懂了。哦,这个方法调用的时候,要看实际对象的真正类型,而非它的指针或者引用的类型。简原创 2020-12-18 15:28:49 · 517 阅读 · 2 评论