
<C/C++>
文章平均质量分 81
JsuFcz
这个作者很懒,什么都没留下…
展开
-
pragma指令简介(转)
在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助! 一. message 参数。message 它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message(“消息文本”) 当编译器遇到这条转载 2008-11-15 13:40:00 · 466 阅读 · 0 评论 -
由拷贝构造及=引发的崩溃问题
我在写网络程序的时候,定义了如下的数据结构: #define SAFE_DELETE(x) { if (x) { delete x; x = NULL; } }#define SAFE_DELETE_ARRAY(x) { if (x) { delete[] x; x = NULL; } }struct _BUFF{ char *pBuf; int Buf原创 2009-04-17 15:59:00 · 587 阅读 · 0 评论 -
类成员函数指针
From:http://blog.youkuaiyun.com/hairetz/archive/2009/05/06/4153252.aspx个人感觉对于类的成员函数指针这块讲解的比较深入详细推荐阅读///////////////////////////////////////////////// 先看这样一段代码 class test { public:转载 2009-11-05 23:52:00 · 787 阅读 · 0 评论 -
C++ VTable 的理解
我们知道C++支持的虚函数是通过为每个类提供一个虚函数来实现的,它的内存状态究竟是怎样的呢?首先我们实现两个拥有虚函数的类:ClassA和ClassB,其中ClassB是ClassA的派生类,具体实现如下://ClassA#include #include class ClassA{public: ClassA() {转载 2010-03-04 18:45:00 · 1005 阅读 · 0 评论 -
C语言中的位域的使用
使用C/C++已经好多年了,但一直以来不怎么重视位域的使用,今天发现在做IP头结构的时候,正在需要,于是收集了一些资料,贴在下面: 所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为:原创 2010-04-03 20:27:00 · 828 阅读 · 1 评论 -
函数指针 (*(void (*)( ) )0)( ) 解析
概述 在很多情况下,尤其是读别人所写代码的时候,对 C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。 问题:声明与函数 有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做? 答案 答转载 2009-03-09 16:05:00 · 687 阅读 · 2 评论 -
C++类型转换-重载研究(二)
在写这篇文章之前,让我们先回顾一下编译器通过匹配过程确定调用哪一个函数的匹配顺序:(1) 寻找和使用最符合函数名和参数类型(包括返回值)的函数,若找到则调用;(2) 否则,寻找一个函数模板,将其实例化产生一个匹配的重载函数,若找到则调用;(3) 否则,寻找可以通过类型转换进行参数匹配的重载函数,若找到则调用它。如果以上步骤均原创 2008-12-14 14:23:00 · 1904 阅读 · 0 评论 -
auto_ptr解析(转)
By SmartPtr(http://www.cppblog.com/SmartPtr/)auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样转载 2008-11-15 14:11:00 · 468 阅读 · 0 评论 -
基类虚函数的强制调用
1. 在派生类中调用基类虚函数(MFC的作法 )class Derive :public Base { public: virtual void vfunc() { coutBase::vfunc(); }; void refunc() { coutBase::refunc(); }; }; 2. 外部用户的调用方法首原创 2008-11-15 14:16:00 · 2871 阅读 · 4 评论 -
C++类模板的三种特化(转)
By SmartPtr(http://www.cppblog.com/SmartPtr/) 说起C++的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型, 一是特化为绝对类型; 二是特化为引用,指针类型;三是特化为另外一个类模板。这里用一个简单的例子转载 2008-11-15 14:12:00 · 531 阅读 · 0 评论 -
C++虚函数的原理(转)
理解虚函数( virtual function )的几个关键点:1. 理解早绑定(early binding)、晚绑定(late binding)。所谓early binding:On compile time,就能明确一个函数调用是对哪个对象的哪个成员函数进行的,即编译时就晓得了确定的函数地址;所谓late bindin转载 2008-11-15 14:15:00 · 591 阅读 · 0 评论 -
warning LNK4098 VC开发中遇到的问题(转)
默认库“library”与其他库的使用冲突;使用 /NODEFAULTLIB:library您试图与不兼容的库链接。注意 运行时库现在包含可防止混合不同类型的指令。如果试图在同一个程序中使用不同类型的运行时库或使用调试和非调试版本的运行时库,则将收到此警告。例如,如果编译一个文件以使用一种运行时库,而编译另一个文件以使用另一种运行时库(例如单线程运行时库对多线程运行时库),并试转载 2008-11-15 13:41:00 · 717 阅读 · 0 评论 -
do...while(0)的妙用(转)
By SmartPtr(http://www.cppblog.com/SmartPtr/) 在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do.转载 2008-11-15 14:09:00 · 676 阅读 · 1 评论 -
_stdcall 与 _cdecl 的区别
几乎我们写的每一个WINDOWS API函数都是__stdcall类型的,首先,需要了解两者之间的区别: WINDOWS的函数调用时需要用到栈(STACK,一种先入后出的存储结构)。当函数调用完成后,栈需要清除,这里就是问题的关键,如何清除??如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者,用COM的术语来讲就是客户来完成的。这样带来了一个棘手的问题,不同的编译器产生栈的方式不转载 2008-11-21 09:43:00 · 535 阅读 · 0 评论 -
C/C++ 日期 时间 time_t与struct tm转换
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)1.概念在C原创 2009-02-24 10:51:00 · 2847 阅读 · 0 评论 -
函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)
函数调用规范__cdecl和__stdcall的区别一目了然(表格形式) Posted on Tuesday, May 24, 2005 3:23 PM #C & C++ <!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elem转载 2009-02-25 09:23:00 · 968 阅读 · 0 评论 -
C++类型转换重载研究(一)
最近在使用COM的字符串时,觉得_bstr_t的自动类型转换非常有意思,故特来研究。下面是_bstr_t的一些用法:将char*/WCHAR*值赋给_bstr_tm_rst->GetFields()->GetItem(nCol)->Value = (_bstr_t)sValue;从_bstr_t返回char*/WCHAR*值strcpy(sValue, (char*)(_bst原创 2008-12-13 22:27:00 · 1933 阅读 · 0 评论