随笔分类 -  C/C++

【ZZ】COleVariant与常用基本数据类型之间的转换
摘要:COleVariant是数据库常用到的数据类型。它可以是字串,整型值,日期等。知道怎样将它转换为CString很有用处。设有CStringA;COleVariantB;来看看怎样将COleVariant转换为CString:switch(B.vt){caseVT_BSTR:A=V_BSTRT(&B);break;//COleVariant是一个字串caseVT_I2:A.Format(_T... 阅读全文

posted @ 2009-05-31 13:49 TobyLin的学习之路 阅读(2144) 评论(0) 推荐(0)

【提醒】类的static变量应该在类外进行初始化
摘要:类的static变量具有类似全局变量的效果,其初始化也应该在类外进行:(否则会出现“LINK2001:未解析的符号”的链接错误)class ChairTool:public VATool{public: enum Move_Modifier{MM_Ctrl=1,MM_Shift}; static Move_Modifier move_modifier;…};Ch... 阅读全文

posted @ 2009-05-19 15:13 TobyLin的学习之路 阅读(494) 评论(0) 推荐(0)

【提醒】typedef定义数组类型时的语法
摘要:对数组进行typedef时注意语法:typedef char Line[81];//Line是char[81] (而不是说char是line[81])Line text, secondline;getline(text);typedef int mat4by4[4][4]; //4*4的二维数组mat4by4 mymat;/////////////////////////可以象下面这样隐藏指针语法... 阅读全文

posted @ 2009-05-18 23:01 TobyLin的学习之路 阅读(3562) 评论(0) 推荐(0)

自定义类型转换函数 operator TYPENAME()
摘要:1. VAssist插件不能实时检测using namespace XXX的语句,如果cpp文件中用到了自定义的namespace必须在类的定义处列出完整的namespace而不能用using namespace语句才能确保VAssistX正常解析上下文菜单。(最后还是不用VA了。。感觉用using namespace XXX语句还是比较方便)2. ClassX::GetData(){return... 阅读全文

posted @ 2009-05-15 23:52 TobyLin的学习之路 阅读(715) 评论(0) 推荐(0)

ZZ 主要C++流派,看看你是哪一流
摘要:主要C++流派,看看你是哪一流 ZThttp://blog.csdn.net/nightmare/archive/2006/11/01/1360928.aspx1. 经典C++流:类是核心,例程多用C Runtime的,很少用模版,一般是正统教育的结果。2. 古典C流:基本上当C用,偶尔用用对象,不使用异常,喜欢怀旧。3. MFC流:秉承MFC的风格,主要使用MFC/ATL对象和Win32 API... 阅读全文

posted @ 2009-05-10 03:51 TobyLin的学习之路 阅读(245) 评论(0) 推荐(0)

总结 GdiObject::DeleteObject()的使用
摘要:看完了《Microsoft Visual C++ windows applications by example 》第一个例子,做下总结。今天的感想:(1)CObject很好很强大。(2)MSDN上的解释是很好的,不过貌似英文转成中文再加上自己的理解就完全不对了。-_-! (3) GDI容易资源泄漏,以后得看看GDI+//**************************************... 阅读全文

posted @ 2009-05-10 02:12 TobyLin的学习之路 阅读(1735) 评论(0) 推荐(0)

【转载自BAIDU百科】MFC的CObject类
摘要:CObject  CObject是大多数MFC类的根类或基类。CObject类有很多有用的特性:对运行时类信息的支持,对动态创建的支持,对串行化的支持,对象诊断输出,等等。MFC从CObject派生出许多类,具备其中的一个或者多个特性。程序员也可以从CObject类派生出自己的类,利用CObject类的这些特性。CObject的结构  以下是CObject类的定义:  class CObject ... 阅读全文

posted @ 2009-05-09 23:08 TobyLin的学习之路 阅读(502) 评论(0) 推荐(0)

【转载】WriteProfileInt的使用
摘要:在Win.ini 中写入一个整数数值的Key. 古老的程序在没有注册表时会这么干. 要在指定的.ini 文件中写入则是 WritePrivateProfileInt95/98写入WIN.INI,NT/2000/XP写入注册表。至于写入注册表哪个位置则是由参数lpszSection和lpszEntry来决定的。GetProfileInt和WriteProfileInt到底有什么用?请指教读/写一个 ... 阅读全文

posted @ 2009-05-09 22:29 TobyLin的学习之路 阅读(943) 评论(0) 推荐(0)

【转载】利用CPU缓存的特性优化数据存储---数组vs链表
摘要:一个常见的编程问题: 遍历同样大小的数组和链表, 哪个比较快? 如果按照大学教科书上的算法分析方法,你会得出结论,这2者一样快, 因为时间复杂度都是 O(n)。 但是在实践中, 这2者却有极大的差异。 通过下面的分析你会发现, 其实数组比链表要快很多。首先介绍一个概念:memory hierarchy (存储层次结构),电脑中存在多种不同的存储器,如下表 CPU寄存器 – immedi... 阅读全文

posted @ 2009-05-08 23:00 TobyLin的学习之路 阅读(488) 评论(0) 推荐(0)

虚析构函数的用处
摘要:《EFFECTIVE C++》条款14:确定基类有虚析构函数“当通过基类的指针去删除派生类的对象,而积累又没有虚析构函数时,结果将是不可确定的”。通常发生的情况是:派生类的析构函数永远不会被调用。派生类的构造函数应在初始化表里调用基类的构造函数;派生类和基类的析构函数应加Virtual关键字。(以正确地根据多态性调用析构函数)不要小看构造函数和析构函数,其实编起来还是不容易... 阅读全文

posted @ 2009-05-08 07:10 TobyLin的学习之路 阅读(430) 评论(2) 推荐(0)

【转载】用const修饰函数 以及引起的附加限制:const函数不能调用非const的函数或引用非const参数
摘要:问题来源:《Microsoft Visual C++ windows applications by example 》pdf第74页(书面57页)问题描述:BankAccount类的const实例(const BankAccount account2)对其非const方法account2.withdraw(int)的调用属于非法。原因:withdraw的//*******************... 阅读全文

posted @ 2009-05-08 06:54 TobyLin的学习之路 阅读(2483) 评论(0) 推荐(0)

【转载】override overload hide辨析
摘要:C++中的函数overloading是“context-free overloading”,必须参数列表不同。Ada和Lisp支持”context-dependent overloading”只要求返回值不同即可算是重载。 这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个概念是比较容易的,但是隐藏这一概念却使问题变得有点复杂了,下面说说它们的区别吧。 重载oveload是指不... 阅读全文

posted @ 2009-05-08 06:15 TobyLin的学习之路 阅读(244) 评论(0) 推荐(0)

【转载】关于“静态方法不能调用非静态方法”的补充解释
摘要:找到一篇文章验证了我之前的想法(static方法调用non-static方法必须通过传对象参数的方式,因为non-static方法是与对象实例对应的) http://hi.baidu.com/danghj/blog/item/1f96d1eac9771cd6d539c986.html ... 阅读全文

posted @ 2009-05-08 05:27 TobyLin的学习之路 阅读(1569) 评论(0) 推荐(0)

【转载】class和struct的区别 类的内存结构
摘要:转载一篇文章 写的不错 http://blog.sina.com.cn/s/blog_54ce5b83010002vt.html 有很多人在学习C++的时候只是了解了C++的语法,或者更高层次的人是理解了oo,但在这样的学习过程中,往往一些最基本的问题反而被忽略了。当然,这些问题或许在你做工程中,不会有太大的影响,只要按照平时一贯的良好编码习惯,依旧可以写出好的代码;但某些时候,或许就是这些最... 阅读全文

posted @ 2009-05-08 04:47 TobyLin的学习之路 阅读(872) 评论(0) 推荐(0)

【转载】程序的终止 exit函数 abort函数
摘要:exit和_exit函数用于正常终止一个程序: _exit立即进入内核,exit则先执行一些清除处理(包括调用执行各终止处理程序,关闭所有标准I / O流等),然后进入内核。使用不同头文件的原因是:exit是由ANSI C说明的,而_exit则是由POSIX.1说明的。 由于历史原因,exit函数总是执行一个标准I/O库的清除关闭操作:对于所有打开流调用 fclose 函数。exi... 阅读全文

posted @ 2009-05-08 04:22 TobyLin的学习之路 阅读(2556) 评论(0) 推荐(0)

【ZZ】区分C++的几种类型转换方式(温习温习~)
摘要:下面讨论假设你已经了解C语言程序设计和初步的C++的知识。 一般来说,类型转换分为两种,即显式(Explicit)和隐式(Implicit)。 隐式类型转换:其中,隐式的类型转换相信大家都曾经用过甚至乎经常用,例如说把一个整形的变量赋给一个浮点数,或者在一个声明采用整形参数的函数中,以浮点数作为参数。在这些类型中,也许你可能忽略掉,但实际上你是在做类型转换,这不过是由系统自动完成而已。 ... 阅读全文

posted @ 2009-05-07 16:52 TobyLin的学习之路 阅读(428) 评论(0) 推荐(0)

【ZZ】C++运算符重载总结 & 返回值优化
摘要:问题:运算符重载时如何区分prefix和postfix形式? (注:晚上看书才发现原来这是《More Effective C++》条款M6 果然不看书是不行的...) Answer:下面例子程序中 const Fraction operator ++(int) 中 int不过是个哑元(dummy),是永远用不上的 它只是用来判断++是prefix 还是 po... 阅读全文

posted @ 2009-05-07 16:50 TobyLin的学习之路 阅读(1130) 评论(0) 推荐(0)

开始尝试google test单元测试工具(又是MTd/MDd搞的鬼!)附带VC运行库详解
摘要:今天试了一下google test,环境是VS2008. 下载gtest 1.30,分别在debug和release模式下编译gtest-1.3.0\msvc下的项目文件。项目目录中debug文件夹下和release文件下分别生成debug版本的gtest静态库(gtestd.lib)和release版本的gtest静态库(gtest.lib). 接着新建测试demo项目。建立win32... 阅读全文

posted @ 2009-05-01 13:55 TobyLin的学习之路 阅读(3172) 评论(0) 推荐(0)

【ZZ】C++链接器工具错误 LNK2001, LNK2019
摘要:今天编译工程,发现关于DEBUG/RELEASE和MD/MT以及库文件路径等等等等选项设置不好的话乱七八糟的错误就一大堆 网上找了篇不错的文章 希望能有用 引用URL: http://blog.csdn.net/roger_77/archive/2006/09/21/1259735.aspx 这是归属于链接器工具错误 这一类。 无法解析的外部符号“symbol” 代码引用了链接器无法在库和对... 阅读全文

posted @ 2009-04-20 10:06 TobyLin的学习之路 阅读(1131) 评论(0) 推荐(0)

WIN32 HELLOWORLD
摘要:#include #pragma comment(lib,"WINMM.lib") // used by PlaySound() LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); int WINAPI WinMain( __in HINSTANCE hInstance, __in_op... 阅读全文

posted @ 2009-04-14 11:29 TobyLin的学习之路 阅读(392) 评论(0) 推荐(0)

导航