SF
cpp加油站
cpp加油站
注册登录
关注博客
注册登录
主页
关于
RSS
c++中typename、typedef以及using关键字用法
cpp加油站
2021-06-03
阅读 3 分钟
2.4k
在c++的标准库中,因为类继承关系比较复杂和模板使用比较多的原因,源代码中充斥着typename、typedef和using这三个关键字,所以在继续剖析标准库源码之前,今天就来介绍一下这三个关键字的作用。
超详细STL之基于源码剖析vector实现原理及注意事项
cpp加油站
2021-06-02
阅读 11 分钟
9.3k
多年以前面试的时候第一次被问到stl中vector的底层实现,那个时候的我真的很low,根本回答不上来,后来面试回来,在网络上搜索了一些vector底层实现,知道了它的底层是动态数组,但光知道动态数组是不够的,进一步的,动态数组写满了怎么办,它的实现用了c++的什么技术,一些特殊场景下怎么使用vector更有效率等等,这些...
写技术博客的一些想法,你我共勉
cpp加油站
2021-05-29
阅读 4 分钟
1.6k
到今天为止,公众号也有了51篇原创文章了,其实里面2021年发布的只有18篇文章,其他的都是2019年发布的,尽管目前来讲,成绩还不好,但关于写技术文章,我也算有了自己的一些经验,今天就想从写作平台的选择、写作方式、写文章目的、技术文章内容选择、写文章应有的品德这五个方面说一下自己的一些经历和想法,大家共勉。
题解5道c++面试题第一期(含解题思路、答案解析和实现代码)
cpp加油站
2021-05-28
阅读 4 分钟
1k
这题问的是函数的返回值,而通过代码我们能看到返回值的多少取决于x什么时候变为0,而x的值又取决于x&(x-1)这个表达式,在c++中有一个规则,凡是看到&或者|这样的符号,那就把它左右两边的值转换为二进制去计算,假设x是7,转换为二进制是00000111,x-1那就是00000110,那x&(x-1)就变成00000110了,再减一个1,变...
手写strcpy和memcpy代码实现
cpp加油站
2021-05-26
阅读 3 分钟
2.3k
本篇文章聊一下strcpy和memcpy的代码实现,这两个也是c和c++面试中常考的问题点。1. 手写strcpy首先看一下,一份标准的strcpy的实现如下: {代码...} 这里有如下几点需要注意:源字符串要使用const类型,避免在程序中被修改;在函数入口处要加上断言,检查源字符串指针和目标字符串指针是否有为空的,否则会产生不可预料...
超详细STL之array容器使用及实现原理解析
cpp加油站
2021-05-21
阅读 7 分钟
3.9k
有些书上说array也是一个class,但是我这个版本看到的是struct,不过没有关系,除了一些细微的方面,struct和class并无太大的区别,这里可以看到array其实就是一个模板类。
c++中lambda表达式用法
cpp加油站
2021-05-20
阅读 6 分钟
3.7k
初次接触lambda这个关键字,记得还是在python里面,但其实,早在2011年c++11推出来的时候我们c++就有了这个关键字啦。lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读。
最全面的c++中类的构造函数高级使用方法及禁忌
cpp加油站
2021-05-14
阅读 10 分钟
3.3k
说明一下,我用的是gcc7.1.0编译器,标准库源代码也是这个版本的。本篇文章讲解c++中,构造函数的高级用法以及特殊使用情况。1. 拷贝构造和移动构造区别对于拷贝构造和移动构造,还是看一下这段代码: {代码...} 根据以上代码,我们可以总结出如下两点:拷贝构造从拷贝类型上讲,是属于深拷贝,它会重新申请一块新的内存...
c++类的构造函数不显式声明会自动生成吗
cpp加油站
2021-05-13
阅读 12 分钟
3.8k
在我刚接触c++的时候,我一直知道类可以有四种形式的构造函数,即无参构造函数、有参构造函数、拷贝构造函数、赋值运算符构造函数,最近看标准IO源代码,发现又多了一种,那就是移动构造函数,这是c++11中补充进来的,所以现在c++可以拥有四种形式的构造函数,即无参构造函数、有参构造函数、拷贝构造函数、赋值构造函数...
c语言中strstr函数的一个注意点
cpp加油站
2021-05-11
阅读 2 分钟
2.8k
今天说一个之前工作上遇到过的一个问题,也是之前没注意过的一个点。先看一段代码: {代码...} 大家猜一猜这段代码会输出什么呢?第二个strstr答案很明确,但是对于第一个strstr的调用,可能会有一点疑惑。实际上在遇到这个问题之前,我一直很固执的认为,这段代码应该输出如下答案: {代码...} 那让我们编译以后执行一...
探究一下c++标准IO的底层实现
cpp加油站
2021-05-10
阅读 6 分钟
3.2k
说明一下,我用的是g++7.1.0编译器,标准库源代码也是这个版本的。本篇文章讲解c++标准IO的底层实现结构,以及cin和cout的具体实现。在看本文之前,建议先看一下之前的一篇文章,至少要知道标准IO里面各个类之间的关系:c++标准输入输出流关系梳理1. 标准IO的底层结构通过通读c++标准IO的源代码,我总结出了它的底层实现...
c++中explicit和mutable关键字探究
cpp加油站
2021-05-06
阅读 2 分钟
1.3k
在写c++标准输入输出相关文章,查看iostream实现代码的时候,经常看到构造函数前面带有explicit关键字,那么它到底有什么作用呢。
c++标准库流状态一览
cpp加油站
2021-04-30
阅读 2 分钟
1.3k
c++标准库对于流定义了一套它自己的状态变化规则,在ios_base.h声明的ios_base类中,它定义了一个枚举类型_Ios_Iostate来表示流状态,主要有以下四种:
c++中endl操作符以及它的兄弟们
cpp加油站
2021-04-29
阅读 4 分钟
2.4k
一直以来,我们每次使用cout输出数据的时候,如果要换行,都知道使用形如cout << endl;这样的形式,那么endl到底是什么呢,它是怎么样实现输出一个换行符的功能的,以前我没有思考过,但现在我想弄懂它,下面就一起看一下吧。
c++中ifstream及ofstream超详细说明
cpp加油站
2021-04-28
阅读 7 分钟
4.8k
前文说过,ifstream是继承于istream,ofstream是继承于ostream,fstream是继承于iostream类,而他们使用的缓冲区类是filebuf。
c++中istringstream及ostringstream超详细说明
cpp加油站
2021-04-26
阅读 4 分钟
4.8k
前文说过,istringstream是继承于istream,ostringstream是继承于ostream,而他们使用的缓冲区类是stringbuf。
c语言结构体字节对齐详解
cpp加油站
2021-04-22
阅读 2 分钟
11k
从以上结果可以看出,结构体st1在32位下是按照4个字节来对齐的,在64位下则是按照8个字节来对齐的,结构体st2则不管32位还是64位则都是按照1个字节对齐的。
c++中ostream类的超详细说明
cpp加油站
2021-04-19
阅读 6 分钟
8.3k
可以看到ostream类的默认构造函数是保护类型,而带参数的构造函数则是公有的,根据public和protected的功能,我们要定义一个ostream对象,必须要在参数中传入streambuf类型的指针才可以,否则会报编译错误。
c++中istream类的超详细说明
cpp加油站
2021-04-16
阅读 9 分钟
3.3k
可以看到istream类的默认构造函数是保护类型,而带参数的构造函数则是公有的,根据public和protected的功能,我们要定义一个istream对象,必须要在参数中传入streambuf类型的指针才可以,否则会报编译错误。
c++标准输入输出流关系梳理
cpp加油站
2021-04-13
阅读 4 分钟
1.3k
iostream是现在C++中规定的标准,目的在于使C++代码用于移植和混合嵌入时不受扩展名.h的限制,避免因为.h而造成的额外的处理和修改。
c++类访问权限及友元
cpp加油站
2021-04-08
阅读 3 分钟
2.7k
class是c++的类声明关键字,它的成员类型有三种,是使用三个关键字来声明的,分别是public、private、protected,public声明的叫做公有成员,private声明的是私有成员,protected声明的则是保护成员。
libevent简单服务端和客户端实现
cpp加油站
2019-09-04
阅读 7 分钟
3.9k
在开始使用之前,我们需要先搞清楚libevent编译生成的各个动态库的作用。在下载libevent源码包进行编译以后,当前目录生成.libs目录,该目录下是所有的目标文件,这里我们只说明个动态库so文件的作用,通过makefile我们可以知道各个动态库包含内容:
libevent定时器是怎么实现的
cpp加油站
2019-08-23
阅读 4 分钟
3k
在之前的文章里我们讲过,libevent最后处理都是在event_base_loop调用了相应的dispatch函数,定时器也是在dispatch函数中处理的。
libevent绑定、监听和读写数据
cpp加油站
2019-08-16
阅读 5 分钟
3.4k
在上一篇文章中,以epoll为例说到了事件机制,会按顺序调用init和dispatch这两个回调函数,但是,我们回忆一下网络编程的过程,首先是需要创建socket、绑定socket、监听socket的,但目前为止还并没有涉及到,再去看源代码,会发现里面有listener.c,这个文件里面就会去做创建socket的过程。
libevent的事件机制
cpp加油站
2019-08-07
阅读 9 分钟
2.8k
从上一篇文章《libevent是怎么选择底层实现的》可以看出来,调用event_base_new()函数就是初始化好底层实现,给event_base结构体中evsel赋值,evsel是一个eventop结构体,我们再来看下:
libevent是怎么选择底层实现的
cpp加油站
2019-08-02
阅读 4 分钟
2.7k
libevent实际封装了很多IO复用模式,比如evport,select,poll,epoll,devpoll等等,这些都是不同操作系统下的I/O多路复用模式,那么我们怎么知道当前使用的是哪种模式呢?
libevent源代码初识及目录结构分析
cpp加油站
2019-08-02
阅读 2 分钟
2.5k
我们下载下来源代码以后,看到有很多文件,很多目录,往往不知道从何入手,我一开始也是这样,后来我花时间把每个目录和一些主要的文件内容弄明白后,阅读源代码和学习才顺手一点。
c++11&14-多线程专题
cpp加油站
2019-08-02
阅读 3 分钟
1.7k
在C++11以前,C++的多线程编程均需依赖系统或第三方接口实现,一定程度上影响了代码的移植性。C++11中,引入了boost库中的多线程部分内容,形成C++标准,形成标准后的boost多线程编程部分接口基本没有变化,这样方便了以前使用boost接口开发的使用者切换使用C++标准接口,很容易把boost接口升级为C++标准接口。
c++11&14-STL专题
cpp加油站
2019-08-02
阅读 3 分钟
1.4k
在c++里面不得不提的一个标准库,就是STL,STL包含很多实用的数据结构,如vector,list,map,set等都是我们常用的,而c++11也对STL做了一些补充,使得STL的内容越来越丰富,可选择的也越来越多了。
c++11&14-智能指针专题
cpp加油站
2019-07-31
阅读 6 分钟
1.6k
学c++的人都知道,在c++里面有一个痛点,就是动态内存的管理,就我所经历的一些问题来看,很多莫名其妙的问题,最后都发现是内存管理不当引起的。
1
(current)
2
下一页
1
(current)
下一页