
C/C++语言
文章平均质量分 79
zj510
这个作者很懒,什么都没留下…
展开
-
volatile 说明 (转载)
C中的volatile用法volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如: volatile int i=10; int j = i;转载 2012-10-31 15:23:25 · 709 阅读 · 0 评论 -
C++模板 - value traits
前面的文章使用了type traits,其实traits还有value traits。再看一下累加函数:templatestruct traits;template<>struct traits{ typedef int AccuT;};template<>struct traits{ typedef int AccuT;};templatetypename原创 2014-12-16 16:27:03 · 1200 阅读 · 0 评论 -
C++模板 - traits & policy
traits和policy在泛型编程里面还是挺常见的。像stl的string实现里面就用到了traits,boost里面也很多地方用到traits。traits和policy很多时候都会一起使用,让我们在泛型编程里面多了一些思路。traits:中文解释为特征,记得候捷在《stl源码剖析》那本书里面还叫做萃取什么的。当我们想从一个类型身上获取他的一个附加特性的时候,往往可以考虑traits。原创 2014-12-17 10:42:41 · 1384 阅读 · 0 评论 -
C++模板 - policy类
一讲到traits,相应的就会联系到policy。那么policy是干啥的呢?看一下下面的累加代码。templatetypename traits::AccuT accum(const T* ptr, int len){ traits::AccuT total = traits::Zero(); for (int i = 0; i < len; i++) { total +原创 2014-12-16 18:20:43 · 2032 阅读 · 0 评论 -
C++模板 - traits
traits是个很好玩的东西,在泛型编程里面很常见。最早出于老外的一篇论文。http://www.cantrip.org/traits.html?seenIEPage=1 建议仔细阅读。 首先我们来看一段代码。templateT accum(const T* ptr, int len){ T total = T(); for (int i = 0; i < len; i++)原创 2014-12-16 15:51:41 · 1255 阅读 · 0 评论 -
跨DLL的内存分配释放问题 Heap corruption
这是个很典型的问题,在MSDN上也有描述。问题是原创 2014-06-27 23:38:56 · 13636 阅读 · 5 评论 -
C 可变长参数 VS C++11 可变长模板
有些时候,我们定义一个函数,可能这个函数需要支持可变长参数,也就是说调用者可以原创 2014-07-03 13:50:32 · 15143 阅读 · 2 评论 -
C++ 虚函数概述
虚函数是C++里面的一个非常重要的概念,虚函数是实现C++多态的基石。C++类里面的成员函数默认不是虚函数,如果要把它变成虚函数,只需要在函数前面加上virtual。(JAVA成员函数默认就是虚函数)几乎所有C++程序员都会使用虚函数。那么虚函数到底是怎么实现的呢?别急,我们先来看看几个简单的问题。(本文里面所有代码的运行环境是:windows 7 32bit操作系统) 几个简原创 2012-11-06 12:12:12 · 959 阅读 · 0 评论 -
C++ 虚析构函数
C++类里面,我们经常可以看到析构函数是虚函数,这个虚函数有什么作用吗?我们可以通过一个很简单的例子来看看虚析构函数的作用。class CBase{public: virtual ~CBase() { printf("CBase::~CBase()\n"); }};class CChild: public CBase{public: virtual ~CChild()原创 2012-11-01 14:28:04 · 3519 阅读 · 1 评论 -
C++类成员冒号初始化以及构造函数内赋值
通常我们对类成员进行“初始化”有两种方式:1. 构造函数后面跟冒号;2. 构造函数里面对成员进行赋值。有些人不太注意这个小细节,或者根本不知道他们的区别,认为两种方式是一样的。这个误解有时可能会对程序带来影响,这里我来介绍一下这两种方式。首先我们看这么一段代码:class A{public: A(int& c) { _a = 1; }protected: in原创 2012-11-01 11:58:22 · 43337 阅读 · 18 评论 -
随手写了一段C++访问LDAP, 并且获取sid的代码
直接上代码,获取sid,并且转换成字符串形式。没有仔细优化代码,这只能是一段demo代码,但是能跑成功。跟大家share一下。// LDAPTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include "Winldap.h"#include原创 2015-09-07 11:54:14 · 4570 阅读 · 7 评论