c/c++
石木先声
开开心心学技术,简简单单做工作!
展开
-
C++禁止对象拷贝操作
若想禁止类对象的拷贝/赋值等操作,可通过将拷贝及赋值操作相关接口定义为私有,具体可参考单例模式及leveldb::cacheprivate: void LRU_Remove(Handle* e); void LRU_Append(Handle* e); void Unref(Handle* e); struct Rep; Rep* rep_; // No cop原创 2015-11-03 20:46:54 · 742 阅读 · 0 评论 -
运算符重载
一、为什么使用操作符重载?对于系统的所有操作符,一般情况下,只支持基本数据类型和标准库中提供的class,对于用户自己定义的class,如果想支持基本操作,比如比较大小,判断是否相等,等等,则需要用户自己来定义关于这个操作符的具体实现。比如,判断两个人是否一样大,我们默认的规则是按照其年龄来比较,所以,在设计person 这个class的时候,我们需要考虑操作符==,而且,根据刚才的分析,比较转载 2016-03-12 11:22:46 · 412 阅读 · 0 评论 -
方法重写与方法隐藏
该博文仅用于交流学习,请慎用于任何商业用途,本博主保留对该博文的一切权利。博主博客:http://blog.csdn.net/qq844352155转载请注明出处:方法重写.是指在子类中重新编写父类中的虚函数的实现.要求子类中的函数必须跟父类中的原型一致.包括返回值类型(协变返回类型不算)以及参数的数目,排列顺序.[cpp] view转载 2016-03-10 21:55:52 · 482 阅读 · 0 评论 -
文件锁 flock及fcntl flock
原文地址:http://blog.chinaunix.net/uid-24774106-id-3488649.html 提到了flock,不提fcntl这个锁有点不想话,毕竟fcntl这个锁才是更常见的一把锁。咱也不能拈轻怕重,逮着软柿子可劲捏,今天我们比较下这两种类型锁的异同,并从kernel实现的层面,来讲讲为啥表现不同,准备好了没,LET GO!转载 2016-03-08 17:24:50 · 3357 阅读 · 0 评论 -
引用及指针
原文地址:http://blog.csdn.net/listening_music/article/details/6921608下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义:引用-引用是一转载 2016-02-15 11:45:49 · 326 阅读 · 0 评论 -
函数调用过程探究
原文地址:http://www.cnblogs.com/bangerlee/archive/2012/05/22/2508772.html引言如何定义函数、调用函数,是每个程序员学习编程的入门课。调用函数(caller)向被调函数(callee)传入参数,被调函数返回结果,看似简单的过程,其实CPU和系统内核在背后做了很多工作。下面我们通过反汇编工具,来看函数调用的底层转载 2016-01-13 10:04:52 · 357 阅读 · 0 评论 -
简单的缓冲区溢出试验
原文地址:http://drops.wooyun.org/papers/1421from:http://www.spectrumcoding.com/tutorials/exploits/2013/05/27/buffer-overflows.html 翻译的比较逗比,都是按照原文翻译的,加了少量润色。中间有卡住的地方或者作者表述不清楚的地方我都加了注,大家将就看吧=v=。转载 2016-01-12 20:27:23 · 1320 阅读 · 0 评论 -
C++ #,##,stdin,stdout,stderr
// 标准输入,标准输出,标准错误输出/* Declare _iob[] array */#ifndef _STDIO_DEFINED_CRTIMP FILE * __cdecl __iob_func(void);#endif /* _STDIO_DEFINED */#ifndef _FILE_DEFINEDstruct _iobuf { char *_ptr;转载 2016-01-07 16:27:21 · 1410 阅读 · 0 评论 -
宏 __FILE__,__LINE__,#line,__func__
原文:http://blog.csdn.net/taric_ma/article/details/7517949C语言中的__FILE__用以指示本行语句所在源文件的文件名,举例如下(test.c):#include int main(){printf("%s\n",__FILE__);}在gcc编译生成a.out,执行后输出结果为:test.c转载 2016-01-07 09:39:14 · 342 阅读 · 0 评论 -
linux文件权限chmod
chmod [ugoa]u:user, g:group, o:other, a: allread(r):4, write(w):2, execute(x):1eg:chmod 777 ./exe1chmod 755 ./exe1chmod u+x, g-x, o-x ./exe1chmod ug+x, o-x ./exe1chmod ug=rwx, o=r ./ex原创 2015-11-25 19:44:33 · 361 阅读 · 0 评论 -
写文件fflush问题
最近工作中碰到问题如下:从hbase下载二进制数据至本地磁盘(fopen/fwrite/fclose)后,再调用引擎从本地磁盘路径读取加载至内存时常容易导致引擎崩溃。解决方法:fclose之前先调用fflush刷新缓冲区至磁盘。参考链接:http://blog.csdn.net/caomiao2006/article/details/7542178http:原创 2015-11-02 10:48:59 · 1067 阅读 · 0 评论 -
类成员函数中调用socket接口close()问题
存在一个类class AA存在接口A::close()及接口A::operate()在接口operate()中申请socket实例fd,随后释放close(fd)过程报错,使用shutdown()替换可用why ??? (C++)原创 2015-11-25 17:40:08 · 500 阅读 · 0 评论 -
iterator erase
各容器迭代器的删除迭代器前置++及后置++删除的区别,且哪些容器迭代器不能进行++删除操作,参见stl介绍原创 2015-11-25 17:32:37 · 460 阅读 · 0 评论 -
内联函数inline
在c/c++代码中常可以看到在函数定义中出现关键字inline,如下截取代码示例inline int Slice::compare(const Slice& b) const { const size_t min_len = (size_ < b.size_) ? size_ : b.size_; int r = memcmp(data_, b.data_, min_len);原创 2015-10-27 21:39:53 · 375 阅读 · 0 评论 -
delete delete[]
原文:http://blog.csdn.net/cbnotes/article/details/38900799c++中对new申请的内存的释放方式有delete和delete[两种方式,到底这两者有什么区别呢?1.我们通常从教科书上看到这样的说明:delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存那转载 2016-03-14 14:08:57 · 535 阅读 · 0 评论