
C++
文章平均质量分 76
lipeng08
字节跳动 分布式存储系统 开发工程师
展开
-
Effective Object-C 2.0 第一章(条目1和2)
1 让自己习惯于Object-C Object-C通过全新的语法结构使C具有面向对象的特性。Object-C语法使用很多的方括号和极长的方法名,这通常被认为是有点冗余。虽然这使得源代码可读性更强,但是对于C++或者java阵营的开发者来说掌握起来有点困难。 Object-C很容易掌握,但是有不少intricacies需要理解,同时也有很多特性通常被忽略了。同样地,也翻译 2014-03-28 16:35:15 · 1587 阅读 · 0 评论 -
C++ 类的成员函数定义在.h中为什么会产生函数重定义错误?
前言此篇博客来源于我在百度知道的一个回答,当时回答的不太清楚,而且追答的时候又有字数的限制,不得已决定写个博客来。问题如下 F.h: void F(){} 1.cpp: #include"F.h" void main(){F()}2.cpp: #include"F.h" void ff(){F()}这样会报error LNK2005的错误。但为什么连接的时候会检查重原创 2015-12-27 13:41:11 · 4667 阅读 · 4 评论 -
C++学习的一些经历
闲扯C++道路的经历前言不知道会不会被骂,毕竟作为一个还不能称为精通C++的人说这些在大神面前总显得有些班门弄斧了。 周围有不少的同学朋友编程都相对比较差,感觉是缺少一些方法,我把我的历程经验贴出来,供大家参考,也欢迎牛人继续讨论。大学大学时候,必修的C,选修的C++,当时就只知道什么类呀,继承啊,多态啊之类的称呼,根本不能说会用。 写个Retangle类还行,一碰到实际的需求,还是用C的过程性的描原创 2016-03-25 15:36:24 · 17802 阅读 · 14 评论 -
LeetCode
前言前一段时间在刷leetcode的习题,刷了100道题,但是并没有很深刻的感觉(可能是因为自己陷入了为了刷题而刷题的状态中,忘了思考了)。按照自己一贯做事的方案,如果没有很深刻的感觉,那就适时的进行总结。回顾曾走过的路,让自己走的更踏实些。我准备对所刷题目的解答进行汇总。对每一个题目我首先提供我自己的一些解法思路,也有有可能加入一些别人精彩的思路。考虑到工程量的浩大,可能并不会事事巨细。这个仅仅是原创 2016-06-18 23:12:18 · 1413 阅读 · 0 评论 -
c++ STL Algorithm简单总结备忘
前言有感于对stl中algorithm类别的不甚了解,于是最近几天利用白天或者晚上零碎的时间对stl中的algorithm的东西进行了简单的浏览,测试和归纳。算法分类非修改算法序列满足某一条件 all_of返回bool类型,是否全部满足某一条件 any_of是否有某一个满足某一条件 none_of是否任何一个都不满足某一条件遍历 for_each 对序列中的元素进行某一个操作例如我喜欢用原创 2017-01-14 20:53:10 · 689 阅读 · 0 评论 -
c++ unordered_map/set自定义对象的hash
平时很少用到unordered_set的自定义对象,常用的都是unordered_map<int>, unordered_map<string>之类的内建数据类型。前段时间在写一个编码库的时候,用到了自定义对象,却无从下手,在此对其进行总结。unordered_map/set是采用hash散列进行存储的,因此存储的对象必须提供两个方法,1,hash告知此容器如何生成hash的值,2,equal_to原创 2017-01-11 16:39:42 · 13923 阅读 · 3 评论 -
C++迭代器实现原理(附带了Java)
前言只要用过C++的容器,相信大家对迭代器都不会陌生。它提供一种统一的接口形式来遍历相应的容器(例如数组,链表,map等)。例子1:迭代器的遍历 利用迭代器遍历数组vectorvector&lt;int&gt; vi{ 1, 3, 5, 7, 9 };for(auto it = vi.begin(); it != vi.end(); ++it) { cout&lt;&l...原创 2018-05-11 17:15:29 · 10153 阅读 · 5 评论 -
c++ ofstream和ifstream详细用法
转载地址:http://panpan.blog.51cto.com/489034/101625/ ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(<<) 向流输出数据。比...转载 2013-09-08 12:12:30 · 1457 阅读 · 0 评论 -
stl string使用
原文地址:http://hi.baidu.com/baowup/blog/item/3a27465c86d71546faf2c066.html/cmtid/de1ef3f0de7554a0a40f52f7 string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外...转载 2013-09-08 09:57:32 · 895 阅读 · 0 评论 -
stl map类的使用
原文地址:http://www.cnblogs.com/eric_lgf/archive/2009/08/02/1536746.html Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织...转载 2013-09-08 09:52:40 · 4020 阅读 · 0 评论 -
gtest框架使用
gtest文档说明: 由于公司单元测试的需要,自己花了大半天时间下载了一个gtest框架,使用了一些测试例子,总览了coderzh的玩转gtest测试框架,又看了几篇gtest博客,写下了以下内容,作为备忘。毕竟我需要的简单的东西,太复杂了我自己很难回顾起来。在此很感谢coderzh,他的玩转google开源框架gtest系列的文章真的不错,极力推荐。链接地址:http://www.cnbl...原创 2013-07-31 18:40:10 · 4547 阅读 · 0 评论 -
C++模板的一些小技巧
很久没有用心的读过一本书了,今天静下心来,认真的看了过去一直在看的云风的书(游戏之旅-我的编程感悟)。这本书从两个月前都开始看,吊吊当当的持续到现在,很多章节浅尝辄止。说实话,有些章节是真心看不懂。看看大牛们的书,自己真是羞愧难当。没办法,既然难以望其项背,自己唯而加快奔跑。今天仔细阅读了C++的一章,受益不少,谨以此记录以备忘。1. template的使用技巧1.1. 封装c++的成员...原创 2014-05-18 14:26:19 · 1630 阅读 · 0 评论 -
内存序列-memor order
内存序今天看内存序看的要崩溃了,太乱了,不同人的博客常常出现前后不一致的情况。这个工作只是临时起意,也不是什么意义重大的工作,因此也没有寻找更权威的资料,最主要的参考是cplusplus上的reference,如果有错误之外,真心希望您来指正一下,自己真的逐个字死磕类型的。为何需要内存序在实际的程序运行过程中,如果不使用任何的同步原语,那么很多变量的执行结果,乃至程序的最终行为是无法预料的。...原创 2018-11-26 09:46:34 · 1762 阅读 · 0 评论 -
gdb不识别g++的b变量符号
gdb调试程序,出现:No symbol “i” in current context.尝试了一个非常简单的hello.cpp程序,#include &lt;stdio.h&gt;int main(){ int i = 100; printf("hello world, %d\n", i); return 0;}使用g++ -g he...原创 2018-11-26 17:48:26 · 661 阅读 · 0 评论 -
用GDB调试c/c++程序
本文系转载,我仅仅是完整的读了一遍,实际的根据流程对命令执行了一遍,并做了界面排版工作。我从地址luckywqf中看到,他也是转载的,因此也不太知道源地址是哪个了,在此感谢。GDB概述GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图...转载 2018-12-03 11:03:53 · 2947 阅读 · 0 评论 -
C++ 对象的内存布局(下)
转载自:http://blog.youkuaiyun.com/haoel/article/details/3081385文章虽然写的相对比较早了,但确实是为数不多的分析c++对象模型的好文章,总结的很详细,到位,有个别笔误,不过不影响窥视它的精髓,更深入了解可以看看转载的另一篇文章:钻石型虚拟多重继承的C++对象内存模型(http://blog.youkuaiyun.com/lpstudy/article/detai转载 2013-09-10 19:34:49 · 902 阅读 · 0 评论 -
c++头文件和实现文件应该怎么布置
转载地址:http://www.cnblogs.com/ider/archive/2011/06/30/what_is_in_cpp_header_and_implementation_file.html在C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析。于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package的概念。对转载 2012-12-28 17:51:02 · 966 阅读 · 0 评论 -
c++拷贝构造函数和赋值函数
准备实现gof上面一个迭代器模式,用到了上面的List基本类,但是一直对赋值函数和拷贝构造函数不是很熟悉,就研读了一下effective c++的关于这方面的一章,颇有收获,抽取了我认为精华的部分分享给大家。由于一直对c++这一类的用法不是很熟悉,有错误或者优化或者需要特别强调的地方希望朋友们帮忙指出来,我再仔细分析改正。1,拷贝构造函数仍然是构造函数,赋值函数不是构造函数故而例如原创 2012-12-30 16:57:46 · 2288 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出(zz)
转载自:http://www.cnblogs.com/chio/archive/2007/11/03/948480.html1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与转载 2013-02-28 20:49:14 · 672 阅读 · 0 评论 -
more-effective-c++ 序列1 new和delete的测试
more-effective-c++ 序列1 new和delete的测试1,在堆内存中分配对象,而且欲对堆内存的分配使用自己的方式。Widget *pWidget = new Widget():1,调用operator new 分配内存2,将内存上的对象调用构造函数3,转换为Widget*赋值给pWidget故而可以通过重写operator new 和delete来原创 2013-03-16 01:44:18 · 1414 阅读 · 0 评论 -
more-effective-c++ 序列2 异常(第9节,如何利用局部对象管理资源)的测试示例
more effective c++关于异常这一大节,会有一篇总体的文章(还在一点点的往下写的过程中),以比较简短的语句来描述异常这一大节的每一个小节的精髓,而整个大节会涉及很多测试,每一个测试会有一篇文章,对应着每一个小节。这一篇文章是针对第9节如何利用局部对象管理资源的。思想:局部对象管理资源,当中途调用出现异常的时候,利用局部对象的析构函数必须被调用的策略,在析构函数中原创 2013-03-16 13:41:33 · 997 阅读 · 0 评论 -
more-effective-c++ 序列1
1.仔细区别指针和引用pointer可以任意指向,referecnce一旦确定不可改变。pointer需要多一次测试是否为null,引用必有所引。当你确定会指向某一个东西,而且绝不会改指其他东西,或者由于语法的实现所限制用指针无法实现的,请选择reference,其他情况尽量使用指针。2.尽量使用C++转型static_cast:完成基本功能const_cast原创 2013-03-16 01:23:43 · 890 阅读 · 0 评论 -
more-effective-c++ 序列2 异常(第10节,通过智能指针解决构造函数的堆内存资源泄露)的测试示例
声明:在看这一节之前,希望你已经阅读过上一节展示的一个资源泄露的例子程序。只有当我们发现问题的所在,再看给出的解决方案的时候,我们才会发现它的美好。这个我是深有体会,如果平平常常的拿出这个例子,也许看不出它的完美,然而如果去探索其这样做的原因,追本溯源,去探索它一步步发展的过程,我们才真的会发现它的伟大。你不禁会惊叹一声,智能指针,真智能。示例代码:通过智能指针的使用,消除了上原创 2013-03-17 18:44:08 · 1332 阅读 · 0 评论 -
more-effective-c++ 序列2 异常(第10节,在构造函数中抛出异常导致资源泄露)的测试示例
声明:本例子描述了在构造函数抛出异常会导致资源泄露的过程。通过本例子,希望我们在编写自己的构造函数的时候,要小心一些可能的异常。如果代码对异常考虑的不够,那么出现异常很有可能导致我们的资源发生泄露。例子说明一切:主要是BookEntry类的构造函数中AudioClip成员初始化的时候出现了异常,这直接导致已经构造完成的Image对象的堆内存没有被正确的释放。仔细看一下代码,便可知。下一原创 2013-03-17 18:37:28 · 1301 阅读 · 0 评论 -
more-effective-c++ 序列2(c++异常处理 汇总篇)
异常之前说过要把异常这一大节做个汇总,这个是汇总篇,尽量用比较精简的话来描述各个小章节的主要的内容,便于自己记忆,也便于大家查阅,可以对自己感兴趣的章节重点去看,毕竟并不是每一个人都喜欢抱着书一章一章的啃的。学会挑自己需要的,也是一种艺术。个人认为:9,10,11非常重要,是一个做c++编程应该知道的技术,12,14,15作为了解即可,不必要做过多的研究,13是一个很实用的小tip原创 2013-03-17 23:19:26 · 1588 阅读 · 0 评论 -
windows bat学习
突然迷上了windows的批处理,突然习惯了在cmd下启动程序,突然习惯了mkdir,cp,rm.....禁不住诱惑,用了几天时间仔细的研究了一下bat的语法结构,主要参照了网上的两篇word文档,感觉写的不错:windows_bat命令编写大全.docx(33kB) windows_BAT批处理命令.doc(175KB)第一篇word文档主要介绍批处理中一些很常用的命令的用法原创 2013-05-28 14:04:55 · 3814 阅读 · 0 评论 -
windows bat批处理语法简析
很久没有写过博客了,这一段时间看的东西不多,很乱,但是不写总感觉有一件工作没有完成,于是草草写下自己的总结吧。第一节先介绍windows批处理。这个起源于跟旁边同事学习在windows用命令行办公,渐渐地有些批处理功能就需要了,于是专门抽出了几天学习了一下。我认为文档最重要的功能是为了备忘,择取了很多文档的例子,现在很久了就没法详细的标明出处了,很是抱歉。为了我个人的使用,例子中很多不太必要的...原创 2013-07-21 17:24:55 · 9679 阅读 · 0 评论 -
C++虚函数的一点分析与思考
简介:以下是自己看过的书籍以及自己思考的流程和总结,主要是对C++虚函数分析了,分析并不算足够深入,但相信对理解c++的虚函数会有些帮助。现在仅仅写到了单继承下的一些皮毛,后面还要继续挖掘一下,希望自己能以淡定一点的心做好一块,不负自己。以下内容适合了解一些C++虚函数以及对指针操作相对来说有点基础的朋友,因为里面为了验证自己的思考进行了很多指针的强转,下面的测试需要有实际的代码操作,不希原创 2013-05-13 10:46:58 · 1508 阅读 · 0 评论 -
c++虚函数表解析
转载自:http://blog.youkuaiyun.com/haoel/article/details/1948051感觉写的相当不错,浅显易懂,有图搭配更舒服,转载在这里储备一下。前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓转载 2013-09-09 18:00:20 · 795 阅读 · 0 评论 -
C++ 对象的内存布局(上)
转载自:http://blog.youkuaiyun.com/haoel/article/details/3081328/前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说转载 2013-09-09 19:08:24 · 792 阅读 · 0 评论 -
钻石型虚拟多重继承的C++对象内存模型
转载自:http://www.cnblogs.com/liu-jun/archive/2013/05/17/3083736.html文章写的不错,是在陈浩大哥的基础上通过使用cl的方式,更加简洁了许多。说的简单明了,为了备忘,转载一下。钻石型虚拟多重继承的C++对象内存模型关于C++对象内存布局的资料和书籍也有很多,比如陈皓老师的博客:1、C++对象的内存布局(转载 2013-09-10 19:29:48 · 1591 阅读 · 0 评论