C/C++
xiaogugood
学生
展开
-
Boost 库 Enable_shared_from_this 实现原理分析
原文地址:http://www.cnblogs.com/lzjsky/archive/2011/05/05/2037363.html使用情景:当类对象被 shared_ptr 管理时,需要在类自己定义的函数里把当前类对象作为参数传给其他函数时,这时需要传递一个 shared_ptr ,否则就不能保持 shared_ptr 管理这个类对象的语义(因为有一个 raw point转载 2015-04-04 10:24:20 · 526 阅读 · 0 评论 -
C++ 关键字 explicit, export, mutable
原文地址:http://blog.csdn.net/touzani/article/details/1637667explicit如果A类有某个构造函数的单个输入参数,是B类(包括基本数据类型)的对象或引用,则C++的编译器会在需要A类形参的函数调用中,自动调用该构造函数,将B类实参隐式地转换为A类实参。这种自动类型转换的好处是,避免了定义函数的两个重载版本,代价是隐式转载 2014-03-21 09:36:12 · 555 阅读 · 0 评论 -
C++继承中作用域小结
继承意味着有父类和子类。1. 父类的对象、引用和指针只能调用父类中定义的成员函数。如果想让父类调用其某个成员函数时执行子类的操作,那么父类必须将该函数声明为virtual,并且子类中对该函数的定义必须与父类中的定义完全一样(返回值类型、函数名和函数形参列表),而且还得是通过父类的引用或指针调用该函数。2. 子类的对象、引用和指针调用某个函数时,编译器会首先在子类的作用域中查找该名字。如找到原创 2014-03-20 10:01:44 · 1693 阅读 · 0 评论 -
C++学习-继承中的作用域(10)
原文地址:http://blog.csdn.net/gzshun/article/details/7289089GDC注:这篇文章非常好。讲解了继承时,因为子类和父类作用域不太的问题所引发的成员访问问题,并且在每种情况下都给出一个实例,通俗易懂!在继承过程中,从基类派生出派生类,可能出现重名的成员,包括数据成员或成员函数,这些属于作用域方面的内容。一、基类的引用或指转载 2014-03-20 09:59:30 · 801 阅读 · 0 评论 -
C++ using关键字作用总结
原文地址:http://www.cnblogs.com/ustc11wj/archive/2012/08/11/2637316.htmlGDC注:今天在看《C++ Primer中文版第4版》第15.5.3小节时,看到了using的使用。于是就像把C++中using的用法做一下总结。在网上搜了搜,发现该篇文章,特此收藏。1.在当前文件中引入命名空间这是我们最熟转载 2014-03-20 08:51:51 · 887 阅读 · 0 评论 -
C++中构造函数和析构函数避免调用虚函数的问题
原文地址:http://anwj336.blog.163.com/blog/static/8941520920106791516915/GDC注:在看《C++ Primer中文版第4版》第15.4.5小节 “构造函数和析构函数中的虚函数”时,没怎么理解。到网上搜了搜,发现了该篇比较好的文章。该篇文章首先给出一个例子,然后分析代码的执行流程,然后我就理解了。最后,该篇文章给出了一些理论知转载 2014-03-19 16:48:25 · 543 阅读 · 0 评论 -
C++重载箭头操作符的理解
原文地址:http://blog.csdn.net/custa/article/details/5674434GDC注:今天在看《C++ Primer》第14.6小结 “成员访问操作符”时,对于重载箭头操作符不是很理解,主要是对于重载该操作符后的返回值应该是一个指针还是一个对象。然后在网上找到了该篇文章。该篇文章首先对书中的相关知识做了一个小结,然后设计了一个例子。通过看这个例子,我终转载 2014-03-19 11:00:23 · 564 阅读 · 0 评论 -
稍微深入点理解C++复制控制
原文地址:http://www.cnblogs.com/liu-jun/archive/2012/11/02/2750813.htmlGDC注:该篇文章是对《C++ primer》第13章的总结,另外作者还设计了一个例子来深入学习C++类的复制控制(复制构造函数、赋值构造函数和析构函数),例子很好,值得一看!通过一个实例稍微深入理解C++复制控制过程,参考资料《转载 2014-03-19 09:57:42 · 505 阅读 · 0 评论 -
C++重载自增和自减操作符
对于这方面的非常好的一个参考资料:《C++ Primer中文版第4版》第14.7小节。待补充....原创 2014-03-19 11:14:54 · 602 阅读 · 0 评论 -
C++虚析构函数、纯虚析构函数
原文地址:http://blog.chinaunix.net/uid-20476365-id-1942463.html虚析构函数析构函数的工作方式是:最底层的派生类(most derived class)的析构函数最先被调用,然后调用每一个基类的析构函数。因为在C++中,当一个派生类对象通过使用一个基类指针删除,而这个基类有一个非虚的析构函数,则结果是未定义的。运行转载 2014-03-19 16:33:19 · 527 阅读 · 0 评论 -
C++ 动态库创建与调用
原文地址:http://www.360doc.com/content/13/0128/16/9235678_262873215.shtml1、概述 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代转载 2014-03-18 09:48:10 · 855 阅读 · 0 评论 -
VS2010中 C++创建DLL图解
原文地址:http://hi.baidu.com/lipeiyi2006/item/df1d035734472d9509be17c0一、DLL的创建 创建项目: Win32->Win32项目,名称:MyDLL选择DLL (D) ->完成.1、新建头文件testdll.htestdll.h代码如下:123转载 2014-03-18 09:43:45 · 1158 阅读 · 0 评论 -
演练:创建和使用动态链接库 (C++)
原文地址:http://www.cnblogs.com/rollenholt/archive/2012/04/14/2447017.html我们将创建的第一种类型的库是动态链接库 (DLL)。 使用 DLL 是一种重用代码的绝佳方式。 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。本演练涵盖以下内容:转载 2014-03-18 09:39:21 · 514 阅读 · 0 评论 -
演练:创建和使用静态库 (C++)
原文地址:http://www.cnblogs.com/rollenholt/archive/2012/04/14/2447021.html我们将创建的下一个库类型是静态库 (LIB)。 使用静态库是重用代码的一种绝佳方式。 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。本演练演示如何完成以下任务:转载 2014-03-18 09:37:06 · 604 阅读 · 0 评论 -
C++内存管理
原文地址:http://www.cnblogs.com/lancidie/archive/2011/08/05/2128318.html[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会转载 2014-03-27 15:11:47 · 904 阅读 · 0 评论 -
C++中的内存分配技术
今天看了《C++ Primer中文版 第4版》第18.1小节 “优化内存分配”,再结合一下以前看的文章,简要小结一下:C++中的内存分配涉及到如下几个概念:1. allocator类:这个是C++标准库提供的一个模板类。它提供类型化的内存分配以及对象的构造和析构。详细的请参考《C++ Primer中文版 第4版》第18.1.2小节 “allocator类”。2. new操作符(new原创 2014-03-27 14:57:48 · 589 阅读 · 0 评论 -
C++的异常处理
原文地址:http://blog.csdn.net/daheiantian/article/details/6530318GDC注:该篇文章在C++异常处理方面的讲解非常全面,而且条理清晰,很值得一看。一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父B转载 2014-03-26 15:20:35 · 556 阅读 · 0 评论 -
C++箴言<13>:使用对象管理资源
原文地址:http://hi.baidu.com/marktian/item/7ea85bf63861ed09d89e728c一个资源就是在你使用完了后,你需要归还给系统。加入你没有这么做,那么可怕的事情就会发生。在C++程序里面,最常用的资源就是动态分配的内存资源(假如你分配的内存资源,但是没有释放它就会造成内存泄露),但是内存仅仅是你必须要管理的许多资源中的一个。其他的常用资源,比转载 2014-01-07 17:22:47 · 529 阅读 · 0 评论 -
auto_ptr解析
原文地址:http://www.cnblogs.com/baiyanhuang/archive/2009/09/16/1730738.htmlGDC注:该篇文章还是不错的,主要是根据auto_ptr的源码来分析了auto_ptr的一些特性,有理有据。不过内容有点多,在此,结合《C++ Primer中文版第4版》17.1.10小节 ”异常说明“(其实我觉得应该是17.1.9小节 ”aut转载 2014-03-26 16:55:01 · 516 阅读 · 0 评论 -
有感于STL的内存管理
原文地址:http://blog.163.com/dengminwen@126/blog/static/870226720097189486788/1. 背景前些天在一个技术分享会上,某大牛说,STL使用了内存池,释放内存的时候,并不释放给OS,而是自己由留着用。听到这些观点后,我就有些着急了,因为我以前一直是直接使用STL的一些工具类的,比如std::string转载 2014-08-18 12:43:06 · 666 阅读 · 0 评论 -
【Linux学习笔记】栈与函数调用惯例
原文地址:栈与函数调用惯例(又称调用约定)— 基础篇 记得一年半前参加百度的校招面试时,被问到函数调用惯例的问题。当时只是懂个大概,比如常见函数调用约定类型及对应的参数入栈顺序等。最近看书过程中,重新回顾了这些知识点,对整个调用栈又有了较深入的理解。作为笔记,记录于此。 NOTICE:本文笔记以32位Linux系统为背景,可能与Win转载 2014-08-11 11:59:55 · 7017 阅读 · 2 评论 -
LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
原文地址:LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):export LIBRARY_PATH=LIBD转载 2014-08-11 11:31:17 · 611 阅读 · 0 评论 -
sizeof,终极无惑(上)
原文地址:http://blog.csdn.net/freefalcon/article/details/548390. 前向声明sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学转载 2014-08-09 22:19:59 · 617 阅读 · 0 评论 -
浅谈C中的malloc和free
原文地址:在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对转载 2014-08-09 19:01:44 · 449 阅读 · 0 评论 -
大端(Big Endian)、小端(Little Endian)存储模式名字的来历
原文地址:http://blog.csdn.net/cashey1991/article/details/8221085这篇文章不是用来告诉你怎么判断计算机是大端模式还是小端模式的,这样的文章有一大把,若只想知道这个,请直接绕道。--->http://baike.baidu.com/view/1922338.htm其实知道大端小端的概念挺久了,只是我一直在琢磨它们名字是转载 2014-08-07 14:41:14 · 667 阅读 · 0 评论 -
PHP扩展中返回数组源码分析
最近在公司的工作时负责实现一些PHP扩展。在这些扩展中,经常需要返回数组。我都是这么操作的:虽然会用,但其实心里一直没底,不知道上面的这个用法是否会出错。通过今天查看php 5.3的源码,终于知道了,上面的用法是安全的。要想弄清楚上面的代码到底都干了什么,需要弄明白3个函数——array_init()、ALLOC_INIT_ZVAL和add_assoc_xxx(其实这个有一簇类原创 2014-07-09 18:24:26 · 3078 阅读 · 0 评论 -
C++ Stream(流)
原文地址:GDC注:看了《C++ Primer》(第四版)的第8张C++流概述在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。C转载 2014-07-24 17:39:28 · 861 阅读 · 0 评论 -
编译 链接和加载
作者:phylips@bmy 2011-11-06 出处:http://duanple.blog.163.com/blog/static/7097176720111141085197/1. 序最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措。索性化了一天多时间将>中部分内容略读了一遍,主要是关于编译,链接和加载这块的。于是顺便做个笔记,方转载 2014-07-04 16:39:33 · 829 阅读 · 0 评论 -
一些与编译,链接相关的问题(zz)
原文地址:地址无关代码,在64位下编译动态库的时候,经常会遇到下面的错误 /usr/bin/ld: /tmp/ccQ1dkqh.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC提示说需要-转载 2014-07-04 14:02:40 · 632 阅读 · 0 评论 -
C/C++可变参数函数
原文地址:http://www.52rd.com/blog/Detail_RD.Blog_zjhfqq_7608.htmlc/c++支持可变参数的函数,即函数的参数是不确定的。一、为什么要使用可变参数的函数?一般我们编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定,因此转载 2014-07-23 18:20:01 · 589 阅读 · 0 评论 -
文件结束符EOF
原文地址:http://blog.csdn.net/chenaibo/article/details/6062773>> 关于文件结束符EOFEOF 是 End Of File 的缩写。在C语言中,它是在标准库中定义的一个宏。人们经常误认为 EOF 是从文件中读取的一个字符(牢记)。其实,EOF 不是一个字符,它被定义为是 int 类型的一个负数(比如 -1转载 2014-07-21 17:14:05 · 1828 阅读 · 0 评论 -
C语言中的函数指针类型转换
今天在看PHP5.3源码中zend_API.h中的原创 2014-06-30 11:54:31 · 21153 阅读 · 0 评论 -
c++编程中的调试技巧(C++编程思想)
原文地址:http://hhfighting.blog.163.com/blog/static/55700323200922093543827/1.调试标记 适用预处理#define定义一个或多个调试标记,在代码中把调试部分使用#ifdef 和#endif 进行管理。当程序最终调试完成后,只需要使用#undef标记,调试代码就会消失。常用的调试标记为DEBUG, 语句序列转载 2014-03-26 14:59:40 · 1326 阅读 · 0 评论 -
c++ 字符串流 sstream(常用于格式转换)
原文地址:http://blog.163.com/zhuandi_h/blog/static/180270288201291710222975/GDC注:今天在做《C++ Primer中文版第四版》第10章的练习——文本查询程序,因为涉及到将字符串分为单词,所以特意写了一个字符串类来处理这件事。做完后,看了作者的源码,发现他是利用istringstream类来实现的,看起来很简洁。因为转载 2014-03-18 10:54:33 · 27689 阅读 · 2 评论 -
C++ 库汇总
原文地址:http://blog.csdn.net/dl88250/article/details/1718046基础类1、 Dinkumware C++ Library参考站点:http://www.dinkumware.comP.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobb's程序设计杰出奖的获得者。其编写的库长期被M转载 2014-03-10 10:42:03 · 694 阅读 · 0 评论 -
对C++沉思录中代理类实现的质疑和修改
原文地址:http://blog.chinaunix.net/uid-25909722-id-2182249.htmlGDC注:本来看《C++沉思录》第五章后,想自己总结一下的,但是太懒,不想写文字。于是就到网上搜一下关于“C++代理类”的文章,然后就找到了该篇好文章。尽信书,不如无书!《C++沉思录》是一本十分经典的C++参考书籍。虽然该书出版于1997年,但是,即使是现转载 2014-03-10 10:07:55 · 654 阅读 · 0 评论 -
C++与Java混合编程
原文链接:http://www.hellocpp.net/Articles/Article/687.aspx概述现在的程序员,不再像以前一样,掌握一种编程语言就可以混得有模有样了,现实的情况是,真实的项目中,通常是涉及多种编程语言,举几个简单的例子, 一个软件为了快速开发,可能是使用Delphi或VB作为界面开发首选语言,底层的指令或核心算法,会使用C/C++处理,涉及数据处理的时候,转载 2012-04-23 17:18:54 · 569 阅读 · 0 评论 -
libgit2:纯C语言实现的Git开发包
原文地址:http://www.csdn.net/article/2013-10-29/2817328-libgit2?reload=1摘要:libgit2是一个可移植、纯C语言实现的Git开发包,作为一款带有稳固API的可重入链接库,libgit2允许你使用任何语言来编写Git应用。libgit2是一个可移植、纯C语言实现的Git开发包,作为一款带有稳固API的可转载 2013-11-01 08:43:51 · 2200 阅读 · 0 评论 -
MATLAB 混合编程
原文地址:http://www.cnblogs.com/xfzhang/archive/2010/12/20/1912214.htmlMatlab Compiler(编译器)或mcc的使用——个人认为是正道1.设置编译器:http://www.cnblogs.com/fence/archive/2010/10/16/1853276.html首先需转载 2013-10-29 13:45:01 · 2171 阅读 · 0 评论 -
在c,c++中调用Matlab
原文地址:http://blog.chinaunix.net/uid-20776117-id-1847019.html在C、C++中调用Matlab Matlab是美国MathWorks公司的产品,是一种以矩阵为基本编程单位的高效数值计算语言。Matlab集科学计算、图像处理、声音处理于一体,为用户提供了丰富的Windows图形界面设计方法,使用户能够在利用其强大数值转载 2013-10-29 13:47:54 · 1056 阅读 · 0 评论