C++
啊困兽犹斗
这个作者很懒,什么都没留下…
展开
-
【C/C++】Linux下使用system()函数一定要谨慎
转载:http://my.oschina.net/renhc/blog/53580曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,故抛弃不用,改用其他的方法。这里先不说我用了什么方法,这里必转载 2016-03-08 15:44:36 · 571 阅读 · 0 评论 -
继承
转载: http://www.cnblogs.com/kzloser/archive/2012/07/02/2570887.html简单地说下C++类的3种继承方式,分别是public继承,protected继承,private继承。最常用的还是public继承。class默认的是private继承,它的member如果没写权限也是默认private。struct则相反,转载 2016-06-23 16:48:02 · 306 阅读 · 0 评论 -
C++中虚函数工作原理和(虚)继承类的内存占用大小计算
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7883531一、虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数。典型情况下,这一信息具有一种被称为 vptr(virtual table pointer,虚函数表指针)的指针的形式。vptr 指向一转载 2016-06-23 19:49:00 · 377 阅读 · 0 评论 -
C++ 中四种cast比较(转载)
转载:http://www.cppblog.com/chaosuper85/archive/2009/08/07/92563.htmlQ:什么是C风格转换?什么是static_cast, dynamic_cast 以及reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个转载 2016-06-23 20:56:37 · 366 阅读 · 0 评论 -
【C++】explicit关键字
C++提供关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换发生.声明为explicit的构造函数不能在隐式转换中使用.C++中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色.1.是个构造器,2.是个默认且隐含的类型转换操作符.写下如AAA = XXX,这样的代码,且恰好XXX的类型正好是AAA单转载 2016-07-21 14:03:02 · 290 阅读 · 0 评论 -
linux中mmap系统调用原理分析与实现
1、mmap系统调用(功能) void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset ) 内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。转载 2016-08-30 16:21:39 · 477 阅读 · 0 评论 -
linux 共享内存shm_open实现进程间大数据交互
转载:http://blog.csdn.net/maopig/article/details/16920907read.c #include #include #include #include #include #include #include #include /*int shm_open(const char *name, int o转载 2016-08-30 16:23:35 · 1725 阅读 · 1 评论 -
C++ 11
转载:http://blog.csdn.net/feng_ma_niu/article/details/400022911 引子去年年底,开始学习C++11新标准,也曾经发表过一篇关于C++11新增内容的帖子,由于CSDN很纠结的编辑页面,最终这篇帖子烂尾了,实在是汗颜。最近,在公司分享了关于C++11的部分内容,借此机会,对于平时常用的,以及在Visual Studio转载 2017-02-04 17:16:32 · 366 阅读 · 0 评论 -
C++ pair(对组)用法
类模板:template struct pair参数:T1是第一个值的数据类型,T2是第二个值的数据类型。功能:pair将一对值组合成一个值,这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数first和second访问。具体用法:1.定义(构造):1 pairint, double> p1; //使用默认构造函转载 2016-07-13 20:30:17 · 289 阅读 · 0 评论 -
C++中虚继承的作用
C++虚继承可以防止多重继承产生的二义性问题。 虚继承,就是在被继承的类前面加上virtual关键字,这时被继承的类称为虚基类,如下面代码中的base类。虚继承在多重继承的时可以防止二义性。 class base class derived1 : virutal public base class derived2 : virtual转载 2017-02-21 16:04:02 · 757 阅读 · 0 评论 -
map、hash_map和unordered_map
unordered_map转载:http://www.blogbus.com/wewe39-logs/121389636.html同事告诉我用unordered_map代替hash_map,好像是标准推荐的吧。(都是哈希啦)头文件#include 命名空间using namespace std::tr1;其他用法和hash_map一样~转载 2016-07-18 20:24:05 · 353 阅读 · 0 评论 -
c++ 标准库的各种容器
c++ 标准库的各种容器(vector,deque,map,set,unordered_map,unordered_set,list)的性能考虑 一、vectorvector采用一段连续的内存来存储其元素,向vector添加元素的时候,如果容量不足,vector便会重新malloc一段更大的内存,然后把原内存中的数据memcpy到新的内存中,并free原内存块,然后将新元素转载 2016-07-18 20:13:26 · 781 阅读 · 0 评论 -
C++ 虚函数表解析
转载:http://blog.csdn.net/haoel/article/details/1948051/前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技转载 2016-02-24 16:22:15 · 311 阅读 · 0 评论 -
对深拷贝与浅拷贝的再次理解
对深拷贝与浅拷贝的再次理解 记得11年底找工作的时候,面试时曾经遇到有面试官问的对深拷贝与浅拷贝的理解,那时候自己回来查了资料,写了篇博客,感觉自己理解了,其实理解的不深刻,最近在调试bug的时候,再次遇到深拷贝与浅拷贝,认真分析了,写写自己的心得吧。 先说下自己的理解吧,浅拷贝,即在定义一个类A,使用类似A obj; A obj1(obj);或者A obj1转载 2016-06-06 13:40:46 · 304 阅读 · 0 评论 -
C++ 智能指针详解
转载:http://blog.csdn.net/xt_xiaotian/article/details/5714477http://blog.jobbole.com/56316/C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致转载 2016-06-14 21:48:56 · 406 阅读 · 0 评论 -
关键字static的作用
转载:http://blog.csdn.net/jshayzf/article/details/8108221这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其转载 2016-07-01 09:25:56 · 369 阅读 · 0 评论 -
STL中的set容器的一点总结
http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/13/2636375.html1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表转载 2016-07-13 20:28:10 · 232 阅读 · 0 评论 -
八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,转载 2016-07-26 21:16:20 · 325 阅读 · 0 评论 -
关于C++中的友元函数的总结
1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元转载 2016-07-05 16:15:57 · 475 阅读 · 0 评论 -
C++中引用和指针的区别
下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义:引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用。见下图,所示引用的含义:2、指针和引用的区别转载 2016-07-05 19:50:15 · 286 阅读 · 0 评论 -
vector中resize()和reserve()区别
先看看《C++ Primer》中对resize()函数两种用法的介绍:1、resize(n) 调整容器的长度大小,使其能容纳n个元素。如果n小于容器的当前的size,则删除多出来的元素。否则,添加采用值初始化的元素。2、 resize(n,t)多一个参数t,将所有新添加的元素初始化为t。而reserver()的用法只有一种转载 2016-07-18 20:03:02 · 1295 阅读 · 1 评论 -
Boost智能指针——shared_ptr
boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include #include #include class implementation{publi转载 2017-05-18 09:54:09 · 363 阅读 · 0 评论