c/c++
proxy7
wan.rui@qq.com
展开
-
关于explicit,和构造函数一起使用.
<br />explicit,和构造函数一起使用. <br />explicit constructor指明构造函数只能显示使用,目的是为了防止不必要的隐式转化. <br />举个例子: <br /> 有这样一段代码: <br /><br />class A <br />{ <br /> public: <br /> A(int); <br /> private: <br /> int num; <br />}; <br /><br转载 2011-05-15 13:24:00 · 472 阅读 · 0 评论 -
在vs2010 添加Gtest 测试框架X86 到x64 工程建立: 步骤 1. 先编译Gtest源码,生成DEBUG 版本"gtestd.lib"与RELEASE版本"gtest.lib"。此处不明
在vs2010 添加Gtest 测试框架X86 到x64 工程建立:步骤1. 先编译Gtest源码,生成DEBUG 版本"gtestd.lib"与RELEASE版本"gtest.lib"。此处不明之处GOOGLE之。此处变为64位版本的2. 建立测试项目工程,可以在原来的需要测试的solution 下面添加工程3. 选择工程平台 4. 配原创 2012-05-25 11:25:58 · 4567 阅读 · 0 评论 -
在父类和子类中定义重载函数 心得
情景: 今天碰到一个问题,父类A写了fun函数,自己重载了很多种形式,然后子类B写了一个fun函数进行重载,然后发现 子类对象访问不到父类的fun函数。直接使用代码说明情况代码如下:#pragma oncetypedef struct STRUCT_INT{ int m_sTemp1; STRUCT_INT() { m_sTemp1=1; }}STRU原创 2012-02-29 20:38:34 · 2276 阅读 · 0 评论 -
关于socket断线处理的两种机制
查阅了很多资料 使用csocket对网络通讯非正常结束的处理 一、当发送数据的时候,检测返回值,或者捕捉到错误,则认为断开。(适用客户端) 二、客户端定时发送消息给服务器,如果隔一段时间没有收到消息,则认为短开。(适用服务器端)原创 2011-07-03 20:39:37 · 1540 阅读 · 0 评论 -
MoveWindow 时候 ASSERT(::IsWindow(m_hWnd))?
xx.MoveWindow 时候 ASSERT(::IsWindow(m_hWnd))?动态加载一个窗体窗体里面有一些控件。在重载窗体的onsize函数后对控件的大小进行修改。void CPropertyPageXunLianJiankong::OnSize(UINT nType, int cx, int cy) { CPropertyPage::OnSize(nType, cx, cy)原创 2011-06-17 10:41:00 · 5192 阅读 · 7 评论 -
CArchive
<br />CArchive<br /><br />CArchive没有基类。<br />CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们。使得数据永久保留的过程就叫作“串行化”。<br />可以把一个归档对象看作一种二进制流。象输入/输出流一样,归档与文件有关并允许写缓冲区以及从硬盘读出或读入数据。输入/输出流处理一系列ASCII字符,但是归档文件以一种有效率、精练的格式处理二进制对象。<原创 2011-04-20 14:07:00 · 418 阅读 · 0 评论 -
ASSERT 和VERIFY
<br />ASSERT<br /><br />ASSERT( booleanExpression )<br /><br />参数: booleanExpression 指定了一个表达式(包含指针变量),其计算结果为非零值或0。 <br /><br />说明:<br />这个宏计算它的参数。如果结果为0,则输出一个调试信息并退出程序。如果结果为非零值,它什么也不做。<br />诊断信息具有如下形式:<br />assertion failed in file <name> in line <num><br原创 2011-04-19 13:18:00 · 522 阅读 · 0 评论 -
堆区(heap)和 栈区(stack)
<br />预备知识—程序的内存分配 <br /><br />一个由c/C++编译的程序占用的内存分为以下几个部分 <br /><br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 <br /><br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br /><br />3、全局转载 2011-04-18 09:16:00 · 502 阅读 · 0 评论 -
DYNAMIC_DOWNCAST
DYNAMIC_DOWNCASTDYNAMIC_DOWNCAST( class, pointer )参数: class 类的名字。 pointer 将要被强制转换为class类对象指针的指针。 说明:DYNAMIC_DOWNCAST宏提供了将一个指针强制转换为指向一个类的对象的指针的简单方式,同时检查这种强制转换是否合法。这个宏将会把pointer参数强制转换为class参数类型的对象指针。如果pointer参数所指向的对象就是class类的对象,这个宏将返回一个适当原创 2011-04-19 16:43:00 · 1470 阅读 · 0 评论 -
CObject::IsKindOf
<br />CObject::IsKindOf<br /><br />BOOL IsKindOf( const CRuntimeClass* pClass ) const;<br /><br />返回值:如果对象对应于该类,则返回非零值,否则为0。<br /><br />参数: pClass 指向与CObject派生类相关联的CRuntimeClass结构的指针。 <br /><br />说明:<br />检测pClass来查看:(1)对象是否属于指定的类,(2)对象是否属于指定类派生的类。该函数仅仅当类声原创 2011-04-19 13:43:00 · 906 阅读 · 0 评论 -
DECLARE_DYNCREATE和 IMPLEMENT_DYNAMIC
<br />DECLARE_DYNCREATE<br /><br />DECLARE_DYNCREATE( class_name )<br /><br />参数: class_name 类的实际名字(不用引号括起来)。 <br /><br />说明:<br />使用DECLARE_DYNCREATE宏可以使每个CObject的派生类的对象具有运行时动态创建的能力。框架利用这种能力来动态创建对象,例如,当它在串行化过程中从磁盘读取对象的时候。文档、视和框架类必须支持动态创建,因为框架需要动态地创建它们。<br原创 2011-04-19 13:22:00 · 1754 阅读 · 0 评论 -
关于__stdcall回调的摘录
代码中,可在函数原型中找到__stdcall,因为它以双下划线打头,所以它是一个特定于编译器的扩展,说到底也就是微软的实现。任何支持开发基于Win32的程序都必须支持这个扩展或其等价物。以__stdcall标识的函数使用了标准调用约定,为什么叫标准约定呢,因为所有的Win32 API(除了个别接受可变参数的除外)都使用它。标准调用约定的函数在它们返回到调用者之前,都会从堆栈中移除掉参数,这也是Pascal的标准约定。但在C/C++中,调用约定是调用者负责清理堆栈,而不是被调用函数;为强制函数使用原创 2011-04-14 08:49:00 · 563 阅读 · 0 评论 -
C++ 对象构造与析构以及内存布局
主要探讨对象的构造顺序与内存的布局,主要参考来源为《Exceptional C++ Style中文版》文中第十四条 顺序!顺序!根据文中的代码摘录如下,代码中添加了一些调试的信息。#include struct classcomp { bool operator() (const __int64& lhs, const __int64& rhs) const {re原创 2013-03-25 13:20:42 · 1152 阅读 · 0 评论