C++从0学习
文章平均质量分 70
向晨宇
热爱编程 追求完美 个性执着
展开
-
IStorage
IStorage接口支持创建和管理结构化存储对象。结构化存储可以在单个文件中分层存储信息,这经常被称为“一个文件内的文件系统”。结构化存储对象中的元素为存储器(storage)和数据流(stream)。存储器可以比作目录,数据流可以比作文件。在一个结构化存储对象中有一个首要的存储器对象,它可能包含多个嵌套着数据流对象的子存储器对象。存储器提供结构化的对象,数据流包含数据。数据流可以通过IStrea转载 2012-08-09 11:06:04 · 1248 阅读 · 0 评论 -
C++当中的virtual继承
今天专门看了一下虚继承的东西,以前都没怎么用过,具体如下:父类: class CParent { .... }; 继承类的声明比较特别: class CChild : virtual public CParent { .... } 请问,这个"virtual"是什么作用及含义? -------------转载 2013-03-12 21:46:01 · 948 阅读 · 0 评论 -
详解C++中的virtual
1.virtual 析构函数的作用析构函数也可以是虚的,甚至是纯虚的。但是构造函数不能是虚的。例如:class A{public:virtual ~A()=0; // 纯虚析构函数};类型需要虚析构函数的另外一个特征是该类型具有指针成员或引用成员。如果有指针成员和引用成员,则该类型通常需要实现析构函数以及拷贝操作。通常,一个实现了析构函数的类型同时也需要实现拷贝构造函数与原创 2013-03-12 23:10:11 · 4656 阅读 · 0 评论 -
C++智能指针详解
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷转载 2013-03-17 22:39:10 · 967 阅读 · 0 评论 -
对模板特化的理解
特化整体上分为全特化和偏特化,这一点大家都没有什么置疑,但是细分它们各包括哪几种状态就很难界定了,而且很多权威的书上都不一致,管它呢,反正我们能会用各种特化就可以了。下面就谈谈我个人对特化的划分和定义:所谓特化,就是将泛型的东东搞得具体化一些,从字面上来解释,就是为已有的模板参数进行一些使其特殊化的指定,使得以前不受任何约束的模板参数,或受到特定的修饰(例如const或者摇身一变成为了指针转载 2013-03-17 21:18:53 · 2402 阅读 · 0 评论 -
C++ Singleton (单例) 模式
http://blog.yangyubo.com/2009/06/04/best-cpp-singleton-pattern/C++ Singleton (单例) 模式最优实现written on Thursday, June 4, 2009索引静态化并不是单例 (Singleton) 模式饿汉模式懒汉模式 (堆栈-粗糙版)懒汉模式 (局部静态变量-最佳版)范例转载 2013-04-16 14:31:09 · 1144 阅读 · 0 评论 -
深入理解指针函数
深入理解指针函数 (2011-03-22 11:41:48)转载▼标签: 指针函数 函数指针 教育 1.指针函数的定义 顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名 *函数名(函数参数表列); 其中,后缀运算符括号“()”表转载 2013-04-25 10:30:24 · 1039 阅读 · 0 评论 -
简单linux C++内存池
在学习内存池的过程中可谓云游太虚。一般都是针对标准内存池再次实现。大部分以链表的形式讨论。诚然最正宗也最准确,但是相对比较晦涩,本文是针对刚刚接触内存池的同学写的。大大减少了对内存池整体认识的难度。 内存池:如果程序中涉及频繁申请释放内存,并且每次使用的内存并不是很大,这时候应该考虑内存池。内存池可以有有效的避免内存碎片的产生。内存池的框架:clas转载 2013-07-14 22:46:14 · 2194 阅读 · 1 评论 -
C++内存池的管理
原帖与示例代码地址:http://www.codeproject.com/KB/cpp/MemoryPool.aspx 译者点评:一个简单的内存池实现,附有源码,简单易懂,适合入门。 概述在c/c++中,内存分配(如malloc或new)会使用很多时间。一个程序会随着长时间的运行和内存的申请释放而变得越来越慢,内存也会随着时间逐渐碎片化。特别是高频率转载 2013-07-05 14:46:29 · 1233 阅读 · 0 评论 -
C++ Containers library std::unordered_map
std::unordered_map::unordered_map explicit unordered_map( size_type bucket_count = /*implementation-defined*/, const H转载 2013-08-05 16:09:44 · 4063 阅读 · 0 评论 -
使用pthread_mutex_t锁的例子
linux下为了多线程同步,通常用到锁的概念。posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。它主要用如下5个函数进行操作。1:pthread_mutex_init(pthread_mutex_t * mutex,const pthr转载 2013-08-08 10:07:43 · 12299 阅读 · 0 评论 -
iOS多线程GCD
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。dispatch queue分成以下三种:1)运行在主线程的Main queue,通过dispatch_get_main_queue获取。/*!* @function dispatch_get_main_queue** @abstract* Returns the转载 2013-08-12 10:01:41 · 761 阅读 · 0 评论 -
COM笔记-QueryInterface函数
客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。它在UNKNWN.H头文件定义 :如下 Interface IUnknown { virtual HRESULT __stdcall QueryInterface( REFIID riid, void ** ppvObj转载 2013-11-16 17:35:46 · 1089 阅读 · 0 评论 -
GCC 编译动态库和静态库
我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。在创建函数库前,我们先来准备举例用的源程序,并原创 2013-11-05 22:16:16 · 1151 阅读 · 0 评论 -
C++_友元函数
1、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数 优点:能够提高效率,表达简单、清晰 缺点:友元函数破环了封装机制,尽量不使用成员函数,除非不得已的情况下才使用友元函数。2、什么时候转载 2013-11-13 22:42:14 · 1517 阅读 · 0 评论 -
STL Vector remove()和erase()的使用
STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除。若要真正移除,需要搭配使用erase()。例子如下:[cpp] view plaincopy// remove.cpp // compile with: /EHsc // Illustrates how to use the rem转载 2014-01-05 12:53:42 · 1676 阅读 · 0 评论 -
c++中虚基类的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do转载 2013-03-11 19:03:18 · 1180 阅读 · 0 评论 -
C++指针
指针就是指向一个特定内存地址的一个变量。简单的说可以理解为一个一维的线性空间,其中的每一个数对应一个存储单元,就是1个字节。指针有两个性质:指向性和偏移性。指向性指的是指针一定要有一个确定的指向,偏移性就是说指针可以加上一个数后偏移位置!指向别的存储空间。 指针的应用往往体现在数组,我们从数组开始解释指针的偏移。数组就是许多的变量,它的一个重要特征就是在内存空间中连续地存转载 2013-02-28 13:50:58 · 697 阅读 · 0 评论 -
Zlib介绍
1. 如何获得zlib zlib的主页是:http://www.zlib.net/ 2. 用VC++6.0打开 把下载的源代码解压打开,VC6.0的工程已经建好了,在projectsvisualc6. 双击zlib.dsw, 可以在VC++6.0中看到里面有3个工程: zlib 是库文件(编译设置选中 win32 lib debug / release), 工程e转载 2012-08-20 17:17:58 · 2434 阅读 · 0 评论 -
C++中explicit关键字的作用
http://www.cnblogs.com/winnersun/archive/2011/07/16/2108440.htmlexplicit用来防止由构造函数定义的隐式转换。要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如:class things{ public:转载 2012-09-03 15:34:58 · 733 阅读 · 0 评论 -
UML那些事儿
2.1 类图2.2 对象图2.3 包图2.4 活动图2.5 序列图2.6 用例图类(Class)类(图A)是对象的蓝图,其中包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可见性。#号表示受保护的原创 2012-09-04 11:39:21 · 3989 阅读 · 1 评论 -
IOS控件的应用UIPageController与UIScrollView
UIPageController是大多数IOS教程上不会写的系统自带控件。它主要的功能是实现视图分页,有点类似于网页上的分页功能。这次主要通过一个例子来讲讲UIPageController控件和UIScrollView的应用。首先上图:图中标有红框的地方,便是UIPageController的展现样式,在xcode里它是这个样子的:现在要开始使用UIPage原创 2012-09-06 14:53:01 · 8886 阅读 · 4 评论 -
c++模版特化
http://blog.sina.com.cn/s/blog_64c4db8601015qzt.html摘要:本文通过例子介绍了在 C++标准库中广泛使用的模板特化和偏特化,并指出了模板特化和偏特化的定义规则和应用规则。关键词:模板、特化、偏特化1.引言C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在S转载 2012-09-29 10:50:17 · 873 阅读 · 0 评论 -
10进制转为16进制
#include #include using namespace std;char ToHexChar(int n){ return n<10 ? n+'0' : n-10+'A';}string foo(unsigned int n){ char t, buff[32]={'0','x', 0}; int i = 2, j = 2; do buff原创 2012-10-14 12:26:34 · 2049 阅读 · 0 评论 -
关于pragma pack的用法(一)
#pragma pack(n)数据边界对齐方式:以如下结构为例: struct { char a; WORD b; DWORD c; char d; }在Windows默认结构转载 2012-09-24 11:53:10 · 1141 阅读 · 0 评论 -
程序代码的五大分区,堆栈的区别
问题引入: 在工作过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内 容程序是会崩溃的,而后者完全正确。 程序演示: 测试环境Devc++ 代码 #include using namespace std;main(){ char *c1原创 2012-10-16 10:03:20 · 2542 阅读 · 4 评论 -
C++学习笔记之对文件的操作<1>
===========================前言=========================== 我们在编写程序的时候,最密不可分的就是对文件进行相应的操作,我们可以从文件中读取数据,可以将数据保存到文件,可以…… 总而言之,言而总之,一言以蔽之,对文件的操作是非常重要的,下面我们就来介绍一下C++中是如何对文件进行操作的。=====转载 2012-11-26 21:40:33 · 1092 阅读 · 0 评论 -
Map基本用法
http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstrin转载 2012-12-04 21:34:23 · 838 阅读 · 0 评论 -
对ARM处理器的内存对齐问题(译)
介绍可以对齐或不对齐的内存访问。对齐的内存访问发生时的数据都位于其自然大小边界。例如,如果该数据类型的大小是4个字节,那么它属于被4整除的内存地址是位于其自然大小边界。未对齐的内存访问发生在所有其他情况下(在上面的例子中,内存地址时,是不能被4整除)。 ARM处理器的设计有效地访问对齐的数据。在ARM处理器上试图访问未对齐的数据会导致不正确的数据或显着的性能损失(这些不同的症状会在稍后讨论翻译 2012-12-17 16:58:23 · 4830 阅读 · 0 评论 -
浅谈C++中的友元关系
http://www.cnblogs.com/accepted/archive/2010/09/04/1818173.html在封装中C++类数据成员大多情况是private属性;但是如果接口采用多参数实现肯定影响程序效率;然而这时候如果外界需要频繁访问这些私有成员,就不得不需要一个既安全又理想的“后门”——友元关系;C++中提供三种友元关系的实现方式,友元函数转载 2013-03-07 23:37:01 · 1116 阅读 · 0 评论 -
计算机变成常用长度单位
【转载】http://www.cnblogs.com/carekee/articles/2124133.htmlpx: 像素(Pixel),是一个相对单位长度,是相对于显示器屏幕分辨率而言的。一般的,Windows平台下用户所使用的分辨率是96像素/英寸,Mac平台下用户所使用的分辨率是72像素/英寸。pt :点(Point),是一个绝对单位长度。in :英寸(Inch),绝对长度转载 2013-02-26 09:57:48 · 1681 阅读 · 0 评论 -
C++成员是指针的处理(二)-引用技术
转载请注明出处:http://blog.csdn.net/xcysuccess3/在学习完IOS之后,觉得C++的拷贝构造函数和赋值函数可以用IOS方式实现。节约内存和时间。试着写了一下B.h//// B.h// Memory//// Created by xiangchenyu on 13-3-10.// Copyright (c) 2013年 xiangche原创 2013-03-10 17:17:54 · 1213 阅读 · 0 评论 -
C++成员是指针的处理(一)
//// A.h// Memory//// Created by xiangchenyu on 13-3-10.// Copyright (c) 2013年 xiangchenyu. All rights reserved.//#ifndef Memory_A_h#define Memory_A_hclass A{public: A(int size):s原创 2013-03-10 10:43:01 · 1182 阅读 · 1 评论 -
IOS中的Block在C++中的运用
1.IOS中block基本demoA视图->B视图,B视图传值给A视图A视图的代码片段:- (IBAction)action2OtherView:(id)sender{ MyView *myView = [[MyView alloc] init]; myView.func = ^(int x,int y) { int xy = myView.number; NSLog(原创 2014-02-24 19:22:50 · 2536 阅读 · 0 评论