C/C++
Superr爬爬虫
博观而约取,厚积而薄发
展开
-
面向对象的六大设计原则
面向对象的六大设计原则:1.Single Responsiblility Principle 单一职责原则There should never be more than one reason for a class to change应该做到有且仅有一个原因引起类的变更。接口尽量要单一2.Open Closed Principle 开闭原则Software entities原创 2012-05-13 12:19:49 · 1091 阅读 · 0 评论 -
#ifdef __cplusplus extern "C" { #endif 含义
如下,经常会在C语言的*.h文件中看到:#ifdef __cplusplusextern "C" {#endif ... #ifdef __cplusplus}#endif这个作用经常看到,也经常忘记,今天做个记录吧。__cplusplus 是C++ 编译器内定的,在一个*.cpp文件中,直接就可以访问该宏,而*.c文件是不可见。extern "C原创 2014-04-02 15:29:50 · 852 阅读 · 0 评论 -
C/C++ typedef 温习
typedef 作用:用来声明一个别名。使用的场合有以下三种:1) 定义一种类型的别名,属于编译过程的一部分,并不实际分配内存空间。在这种使用场景下,typedef与define的作用相同;而不同点在于define声明的类型别名,只是一个简单的宏替换。如:char* pa, pb; typedef char* PCHAR;#define PCHAR2 char*;PC原创 2014-01-01 23:38:34 · 837 阅读 · 0 评论 -
构造函数中抛出的异常
转:http://blog.csdn.net/kybd2006/article/details/1844850构造函数中抛出的异常 1、标准C++中定义构造函数是一个对象构建自己,分配所需资源的地方,一旦构造函数执行完毕,则表明这个对象已经诞生了,有自己的行为和内部的运行状态,之后还有对象的消亡过程(析构函数的执行)。可谁能保证对象的构造过程一定能成功呢?说不定系统当前的某个资源转载 2012-10-27 21:06:02 · 833 阅读 · 0 评论 -
Function 与 Functor 区别
转:http://blog.sina.com.cn/s/blog_54b8fc360100bhxd.htmlFunction几乎是任何语言的元素之一,从Pascal,Fortran到C++,VB,几乎任何时代的语言都支持它。在C++里,随着 C++标准库的推出,人们开始渐渐的接触到另一种定义函数的方式:Functor。所谓Functor,其实就是重载了operator () 的类,其使用方转载 2012-10-27 20:35:11 · 1289 阅读 · 0 评论 -
Linux 下查看.so动态链接库 常用命令
nm用来列出目标文件的符号清单.ar命令可以用来创建、修改库,也可以从库中提出单个模块。objdump:显示目标文件中的详细信息objdump -d ,可以查看这些工具究竟如何完成这项任务ldd 查看可执行文件链接了哪些 系统动态链接库readelf 显示关于 ELF 目标文件的信息readelf -d libffmpeg.so | grep NEEDE原创 2012-04-19 11:21:56 · 10366 阅读 · 0 评论 -
automake autoconf 自动化编译
********************************************************************利用automake和autofile 自动生成makefile文件,自动化编译自己的工程********************************************************************首先安装autoconfi原创 2012-07-22 21:35:22 · 783 阅读 · 0 评论 -
深度探索C++对象模型
1.布局成本:像C struct的情况一样,member functions 虽然在class的声明之内,却不出现在object之中,每一个non-inline member functions 只会衍生一个函数实体,至于每一个“拥有零个或一个定义”的inline function 则会在其每一个使用者(模块)身上产生一个函数实体。因此,C++在布局以及存取时间上主要的额外负担是由virt原创 2012-11-05 11:26:11 · 887 阅读 · 0 评论 -
C++虚拟继承问题
1.引入虚继承和直接继承会有什么区别呢由于有了间接性和共享性两个特征,所以决定了虚继承体系下的对象在访问时必然会在时间和空间上与一般情况有较大不同。1)时间:在通过继承类对象访问虚基类对象中的成员(包括数据成员和函数成员)时,都必须通过某种间接引用来完成,这样会增加引用寻址时间(就和虚函数一样),其实就是调整this指针以指向虚基类对象,只不过这个调整是运行时间接完成的。2转载 2012-10-31 17:02:53 · 549 阅读 · 0 评论 -
C++ 对象的内存布局(下)
转:http://blog.csdn.net/haoel/article/details/3081385C++ 对象的内存布局(下) 陈皓http://blog.csdn.net/haoel 重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函转载 2012-10-31 15:04:24 · 453 阅读 · 0 评论 -
C++ 虚函数表解析
转:http://blog.csdn.net/haoel/article/details/1948051C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“转载 2012-10-31 15:00:40 · 498 阅读 · 0 评论 -
C++虚函数及虚函数表解析
转自:http://www.cnblogs.com/chinazhangjie/archive/2012/07/11/2586535.html一、背景知识(一些基本概念)虚函数(Virtual Function):在基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。纯虚函数(Pure Virtual Function):基类中没有实现体的虚函数称转载 2012-10-19 15:43:50 · 658 阅读 · 0 评论 -
析构函数中抛出的异常
转:http://blog.csdn.net/kybd2006/article/details/1844855析构函数在什么时候被调用执行? 对于C++程序员来说,这个问题比较简单,但是比较爱唠叨的阿愚还是建议应该在此再提一提,也算回顾一下C++的知识,而且这将对后面的讨论和理解由一定帮助。先看一个简单的示例吧!如下:class MyTest_Base{publi转载 2012-10-27 21:05:16 · 1009 阅读 · 0 评论 -
GetMessage&PeekMessage 和SendMessage&PostMessage
在Window 下Chromium 利用了MFC 消息循环机制,借此,对MFC中消息获取和投放的几个函数进行总结下:一、GetMessage&PeekMessageGetMessage 函数结构如下:BOOL GetMessage( LPMSG lpMsg, // 一个MSG的指针 HWND hWnd, // 一般为当前窗原创 2012-10-24 16:17:36 · 3193 阅读 · 0 评论 -
scoped_ptr 与auto_ptr 区别
scoped_ptr 与auto_ptr 都是简单的智能指针,能够保证在离开作用域后对象被自动释放。原理都很相似:都是利用一个栈上的对象来管理一个堆上的对象,从而使得堆上的对象随着栈上的对象销毁而自动删除。不同的地方在于:1.scoped_str不能拷贝,不能转让所管理对象的所有权,而auto_ptr可以,也就是说,scoped_str对象是不能作为函数的返回值的,而aut原创 2012-10-18 16:13:21 · 1579 阅读 · 0 评论 -
C语言宏定义##连接符和#符的使用
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP)转载 2014-04-21 10:43:20 · 717 阅读 · 0 评论