
C++
文章平均质量分 76
hhygcy
这个作者很懒,什么都没留下…
展开
-
《C++ Template. The Complete Guide》笔记之一 缘起
从面对《Modern C++ Design》中backEnds.template的用法一无所知开始,要彻底搞清楚C++的模板是如果工作的决心其实已经埋下了。更何况今天在实现B树的时候反复被模板的编译问题折磨着。更加坚定了看完这本《C++ Template. The Complete Guide》的信念。尽管过去对这个主题知道一些东西,什么特化,偏特化,参数演绎等等。但是系统地看一看也是有必要的。当原创 2009-02-16 17:13:00 · 1952 阅读 · 0 评论 -
《C++ Template. The Complete Guide》笔记之二 Function Templates
大约是受宏(预处理)的压迫太深,所以有了模板以后的第一件事情便是定义模板函数来取代那些MAX和MIN。作者也乐得如此,下面我就马上来看一个最简单的模板函数max的实现:template inline T const& max (T const& a, T const& b){ // if a < b then use b else use a return a <原创 2009-02-17 13:58:00 · 1402 阅读 · 0 评论 -
《C++ Template. The Complete Guide》笔记之三 Class Templates
在粗粗地说了Function Templates之后,肯定要说说最主要的的Class Templates。因为是开始,所以肯定要说的明白点,清楚点:#include #include template class Stack { private: std::vector elems; // elements public: void push原创 2009-02-20 14:15:00 · 2116 阅读 · 0 评论 -
C++中的宏和函数名称的冲突 STL+windows.h
最近在写代码的时候总是发现在#include"windows.h"了以后经常用STL中的min.max函数出现编译错误。但是自认为代码是没有错误的。下面就是相关的代码: // testMacro.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #i原创 2009-03-03 12:21:00 · 4672 阅读 · 0 评论 -
《C++ Template. The Complete Guide》笔记之四 Tricky Basics
这里实际要说到的是一些散乱的比较tricky的概念。不想一一列举了,但是有2个点想拿出来说一说。第一个就是typename,这个关键字用来告诉编译器,后面紧跟的东西是一个类型而不是其他什么东西。假定你有一个Map的类,需要有2个模板参数Key和Value。template class Map{ public: struct MapPair {原创 2009-04-07 11:45:00 · 1355 阅读 · 0 评论 -
win32下 如何定位内存泄漏
在mobile平台上写代码久了,平时的时候都是自己给出检索内存泄漏的方案的。但是在win32下的开发,内存泄漏的检索式如此的简单。在windows下,定义有这样一个宏_CrtDumpMemoryLeaks。它可以帮助你在任何地方打印出当年的内存使用情况,比如说当前有多少内存使用了没有被释放掉。比如说你有这样一段程序:int main (void){ int* p = new int原创 2009-04-23 13:50:00 · 17028 阅读 · 3 评论 -
谈谈 C++ 的私有继承 (Private Inheritance) 在跨平台(Cross Platform)上的妙用
当前mobile平台上主流的C++开发环境有Windows Mobile, Symbian, Brew, Linux等等, 为了加速应用程序在各个平台上的开发, 通常的办法是做一个跨平台的框架(Cross Platform Framework)。那样很多平台无关的代码共享无疑加速了开发,现在关键的问题是如何做到这样平台抽象层。我们看到过很多和下面类似的代码:/*** salThr原创 2009-08-04 10:39:00 · 2361 阅读 · 1 评论 -
写应用程序的要求和库的要求是断然不同的--- 有感于STL insert_n
在跨平台的大计上, 在Symbian上你找不到STL,在Windows Mobile,Brew上也没有RArray。有显然的一点就是你需要重新写一个类似的容器来满足类似的需求,在这里强烈地感觉到写应用程序的要求和Library是断然不同的。我们在std::Vector里面有一些常用的insert, resize等操作通常有一个共同的内部实现函数, 在MS STL里面我们看到的是_Insert_原创 2009-09-22 10:58:00 · 2495 阅读 · 0 评论 -
sizeof struct为什么总是一个问题
在Win32 Crypto API里面很常用的一些接口如CryptImportKey, 会引入一些特定的数据结构作为key的内容和说明。我们在很多的sample里面看到了类似的定义,从而也发现了很诡谲的问题 struct KeyBLOB { BLOBHEADER header; DWORD cbKeySize; BYTE原创 2010-02-24 22:25:00 · 1615 阅读 · 1 评论