多线程--生产者消费者以及死锁
摘要:http://www.cnblogs.com/haippy/p/3252092.htmlhttp://www.cnblogs.com/lidabo/p/3024829.htmlc++多线程相关:mutex,threadCriticalSections
阅读全文
STL源码--序列容器(一)
摘要:一、vector、list、deque 迭代器vector 原始指针list 随机迭代器deque 自定义迭代器,可以+n操作 迭代器失效vector 插入删除在插入删除点后的均会失效(不包括末尾;插入如果重新分配的话就会整体失效;清楚所有也会所有失效list 除了删除的点会失...
阅读全文
c++基础--c++默认生成的成员函数
摘要:class Empty{public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* ope...
阅读全文
c++基础--如何将函数作为参数传递
摘要:转:http://www.cnblogs.com/youxin/archive/2012/04/16/2452620.html把函数作为参数传递,常用的方法之一是用typedef定义一个函数指针。#includeusing namespace std;typedef int (*pf)(int,in...
阅读全文
c++笔记--父类和子类的转化问题
摘要:以下二种情况是可以成立的:父类指针或者引用可以指向子类对象(指针解释的对象大小为基类大小,子类包含有基类)子类分割成基类对象(一只鸡一定是一个动物)以下二种情况不能成立:子类指针或者引用指向父类对象(指针解释的对象大小为子类大小,比基类要大,会出现不合法的内存访问)基类转化成子类(一个动物不一定是鸡...
阅读全文
c++笔记--函数重载(不合法的重载情况)
摘要:在下面几种情况下不能视为重载:1、返回值不同的函数不能视为重载2、返回值是否为静态不能视为重载3、数组和指针int fun(int *ptr);int fun(int ptr[]); // redeclaration of fun(int *ptr)4、函数和函数指针void h(int ());v...
阅读全文
C++重载自增运算符的效率问题
摘要:C++规定后缀形式有一个int类型参数,当函数被调用时,编译器传递一个0做为int参数的值给该函数。increment的前缀形式表示“增加然后取回”,后缀形式表示“取回然后增加”。 1 #include "stdafx.h" 2 #include "assert.h" 3 c...
阅读全文
C++四种cast操作符
摘要:C++的四种cast操作符的区别发信站: 水木社区 (Thu Jan 26 21:15:16 2006), 站内声明 by NetMD:并非我的原创,来自互联网,且是两篇帖子的合集,个人觉得这样才比较完备------------------------------------------------...
阅读全文
智能指针原理与简单实现(转)
摘要:以下实现没有考虑线程安全的问题。智能指针:它的一种通用实现方法是采用引用计数的方法。智能指针将一个计数器与类指向的对象相关联,引用计数跟踪共有多少个类对象共享同一指针。 每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计...
阅读全文
C++内存管理(转)
摘要:内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,...
阅读全文
内存对齐(转)
摘要:http://www.cnblogs.com/kex1n/archive/2009/06/16/2286527.html一.内存对齐的初步讲解内存对齐可以用一句话来概括:“数据项只能存储在地址是数据项大小的整数倍的内存位置上”例如int类型占用4个字节,地址只能在0,4,8等位置上。例1:#incl...
阅读全文
c++笔记--关于箭头运算符重载使用
摘要:在stl里面,list的迭代器有重载箭头运算符。之前没搞清楚这个有什么用,看了一些资料,加上自己前面一篇笔记。写了下面测试程序: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8...
阅读全文
c++笔记--重载箭头运算符
摘要:箭头操作符(->)的通常用法是,使用一个类对象的指针来调用该指针所指对象的成员。左操作数为对象指针,右操作数为该对象的成员。定义重载箭头操作符之后看起来就有点特别,可以用类对象的指针来调用,也可以用类对象直接调用。重载箭头操作符,首先重载箭头操作符必须定义为类成员函数。箭头操作符可能看起来是二元操作...
阅读全文
从LLVM源码学C++(六)
摘要:今天看clang的有关DeclSpec.h,看到有关关键字的一些信息。这里总结一下知识点:各种关键字C++关键字(static/register/atuo/extern/volatile/const)释疑 下面关于C++的几个关键字是经常和我们打交道的而我们又经常对这些含糊不清的, 本文根据自己的学...
阅读全文
从LLVM源码学C++(五)
摘要:知识点:static,const,static const详解:转(http://blog.csdn.net/yjkwf/article/details/6067267)const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。 static表...
阅读全文
从LLVM源码学C++(四)
摘要:关键知识点:断言1 const Option OptTable::getOption(OptSpecifier Opt) const {2 unsigned id = Opt.getID();3 if (id == 0)4 return Option(0, 0);5 assert...
阅读全文
从LLVM源码学C++(三)
摘要:关键知识点:mutable关键字mutable关键字:mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。...
阅读全文
从LLVM源码学C++(二)
摘要:在看Clang源码的过程中遇到过,返回const引用,于是就去google 了一下返回值以及参数传递等相关的知识。首先,为什么要(const 引用)的返回值?首先&的引用作用是C++独有的特性。其作用相当于传入参数时不经过拷贝,而是实实在在的传入。fun(int &a)。如果在函数内部修改了a的值,...
阅读全文
从LLVM源码学C++(一)
摘要:今天开始需要分析clang的源码了,LLVM这个开源的project代码写的很不错的,也算是巩固一下C++的一些基础知识了。首先是在llvm/ADT/OwningPtr.h中定义了owningptr智能指针的实现:源码如下: 1 /// OwningPtr smart pointer - Ownin...
阅读全文
STL源码--vector(一)
摘要:一、vector的特性vector其中一个特点:内存空间只会增长,不会减小,援引C++ Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧...
阅读全文