c/c++
sunny_ss12
这个作者很懒,什么都没留下…
展开
-
const 对象默认为文件的局部变量
定义非const变量时候,他是可以被其它文件访问的。要使用该变量,只需在其他文件使用的地方使用extern Type_Name Variable_Name进行声明即可。而const变量不能这样,const变量默认是文件的局部变量。若要改变这种情况则需特别声明 extern const type_Name Variable_Name进行声明。 incopy转载 2013-03-03 22:08:20 · 453 阅读 · 0 评论 -
在c++中使用指向数组的引用
转自:http://www.cnblogs.com/yonken/archive/2011/05/04/Using_Reference_To_Fixed_Size_Array.html 今天在工作中需要在一个把一个class内部的某个数组成员expose(是的,有时候不这样做只是徒增麻烦)给外面使用,于是自然而然就想应该是返回一个指向这个数组的引用会好些。指向数组的引用这种用法虽然不是很多见转载 2016-11-20 22:42:23 · 1377 阅读 · 0 评论 -
C++正则表达式之PCRE++
正则表达式是一种用于字符串处理的微型语言,其功能非常强大。尽管在C++11中加入了正则表达式库,可遗憾的是linux操作系统的g++编译器对其支持一直不好。 PCRE++实际上是对PCRE正则表达式开源库进行了封装,允许我们在C++程序中使用perl类型的正则表达式。其经常用于字符串搜索,字符串切割以及字符串替换等等。 PCRE++下载地址:http://www.d转载 2016-11-10 16:15:22 · 944 阅读 · 0 评论 -
C++垃圾回收器的实现
转载地址:http://blog.csdn.net/winux/article/details/1768777 转载内容的gc原理是: 把所有已new的对象的信息放到一个set里,把所有smartptr对象放到一个链表里。注意:smartptr的个数可能大于已new对象的个数。如果两个循环引用就是一个例子:有两个对象,4个smartptr。 gc时,遍历所有smartptr,转载 2015-08-18 22:38:42 · 2845 阅读 · 2 评论 -
getopt和getopt_long函数和getsubopt函数
平时在写程序时常常需要对命令行参数进行处理,当命令行参数个数较多时,如果按照顺序一个一个定义参数含义很容易造成混乱,而且如果程序只按顺序处理参数的话,一些“可选参数”的功能将很难实现。 在Linux中,我们可以使用getopt、getopt_long、getopt_long_only来对这个问题进行处理。 [cpp] view plain copy转载 2016-05-14 04:29:32 · 1078 阅读 · 0 评论 -
如何实现函数来处理可变参数
使用va宏实现具有可变参数的函数原创 2016-04-02 02:32:46 · 2508 阅读 · 0 评论 -
如何实现一个malloc
任何一个用过或学过C的人对malloc都不会陌生。大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉。但是,许多程序员对malloc背后的事情并不熟悉,许多人甚至把malloc当做操作系统所提供的系统调用或C的关键字。实际上,malloc只是C的标准库中提供的一个普通函数,而且实现malloc的基本思想并不复杂,任何一个对C和操作系统有些许了解的程序员都可以很转载 2016-03-31 16:58:39 · 436 阅读 · 0 评论 -
GNU C的__attribute__机制
GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。它的书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数,语法格式如下:转载 2016-05-23 12:29:36 · 309 阅读 · 0 评论 -
C++ new 和Placement New 以及nothrow new
转载自:http://www.cnblogs.com/xuxm2007/archive/2011/12/14/2288185.html new有三种使用方式:plain new,nothrow new和placement new。 (1)plain new顾名思义就是普通的new,就是我们惯常使用的new。在C++中是这样定义的: void* operator new(s转载 2015-09-23 14:34:40 · 509 阅读 · 0 评论 -
Effective STL: 使用swap来修整过剩容量
要避免你的vector持有它不再需要的内存,你需要有一种方法来把它从曾经最大的容量减少到它现在需要的容量。这样减少容量的方法常常被称为“收缩到合适(shrink to fit)”class Contestant {...}; vector<Contestant> contestants; vector<Contestant>(contestants).swap(contestants);转载 2015-09-06 18:25:42 · 478 阅读 · 0 评论 -
boost::bind/boost::function
(1) bind可以绑定普通函数,包括函数、函数指针,也可以绑定类的成员函数。 把boost的bind()用在对象的成员函数中时,必须把对象作为成员函数的第一个参数传给bind。原因: 加入a是一个类型A的对象,a.fun()实际为等价为:A::a(&a),即成员函数的第一个参数为对象指针this。 绑定成员函数的例子为: struct point { int x,y;原创 2015-06-05 15:48:50 · 512 阅读 · 0 评论 -
memmove与memcpy的区别
memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, const void *src, size_t count); void *memmove(void *dst, const void *src, size_t count); 他们的作用是一样的,唯一的区转载 2013-10-25 09:55:10 · 835 阅读 · 0 评论 -
区别increment/decrement操作符的前置(prefix)和后置(postfix)形式
转载:http://www.cnblogs.com/hazir/archive/2012/04/16/2451933.html#2356352 C++中允许++ 和-- 操作符的前置和后置两种形式具有重载的能力。而重载是以参数类型来区分的,然而不论是++ 还是 -- 的前置或后置均没有参数,为了区分这两种不同的操作,只好让后置式有一个int自变量,并且在它调用的时候,编译器默认给该int转载 2013-07-10 09:54:21 · 867 阅读 · 0 评论 -
c++小知识点
char*和c风格字符串 1. char * stb="aa"; 这样的stb本身就是一个常量,等价于const char*,不能修改其值的内容。 所以执行stb[0]='b',会出现崩溃。 可以char stb[20]; strcpy(stb,"aa"); 2. c风格字符串(以null结束的字符串)的标准库函数 strlen(s) st原创 2013-03-07 15:50:40 · 779 阅读 · 0 评论 -
用 const 限定类的成员函数
转 http://www.chinaunix.net/old_jh/23/300602.html const 限定类的成员函数: class classname { public: int fun() const; ..... } 注意:采用此种const 后置的形式是一种规定,亦为了不引起混淆。在此函数的声明中和定义中均要使用const,因为cons转载 2013-03-09 18:27:29 · 655 阅读 · 0 评论