C++
ouhaochuan
C plus plus; ObjectArx; AutoCAD二次开发; .NET; ASP.net MVC;
展开
-
看宝典的收获
虚函数的实现方式:每一个“内含虚函数”的类,编译器都会为它做出一个虚函数表(常被称为vtable),表中的每一个元素都指向一个虚函数的地址。此外,编译器当然也会为类加上一项成员变量,是一个指向该虚函数表的指针(常被称为vptr)。 每一个由内含虚函数的类派生出来的对象,都有这么一个vptr。当我们透过这个对象调用虚拟函数,事实上是透过vptr 找到虚拟函数表,再找出虚拟函数原创 2008-04-22 14:31:00 · 452 阅读 · 0 评论 -
关于常引用和拷贝构造函数
拷贝构造函数在以下情况被调用: 1)CString str = strExist;(str = strExist调用的是=操作符) 2)return str; 3)DoSomething(str); 若str未提供拷贝构造函数,则调用默认拷贝构造函数,并进行浅拷贝。若要进行深拷贝则必须自定义拷贝构造函数。 常引用做形参时,被引用对象等效于常对象,它不能调用非con原创 2008-09-04 23:31:00 · 1053 阅读 · 0 评论 -
关键字explicit
c++中的explicit关键字用于防止“单参数的构造函数”被用于隐式的类型转换。例如,class Stack{ explicit Stack(int i_nSize);}...void f(){ // 此时如果Stack的声明中没有explicit,则会创建一个 // 大小为4的Stack并赋值给s,等同于Stack s = Stack(4); Stack s = 4; // 或者下面这种方式同样会发生自动类型转换原创 2010-08-04 17:52:00 · 265 阅读 · 0 评论 -
关于内联函数
在C++中,要想使用内联函数,必要条件是以下之一: 在函数声明前加上关键字inline; 在函数定义前加上关键字inline。 但这些并不是充分条件,你写上inline只是建议编译器使用内联编译,但编译器并不一定会把它内联编译。编译器会自动进行优化。不做内联处理的原因可能有:编译器认为函数过大或函数调用了自己(内联函数不能递归)。有些编译器并没有启用或实现内联函数这一特性。原创 2010-08-09 10:09:00 · 366 阅读 · 0 评论 -
预编译头技术
<br /><br />其实刚开始编程的时候,我是丝毫不重视编译 速度之类的问题的,原因很简单,因为那时我用BASICA。后来一直用到C++ Builder,尽管Borland的广告无时无刻不在吹嘘其编译速度,我却从没有对这个问题上心过,因为心里根本没有“编译速度慢”这种概念。没有坏,哪来好?所谓矛盾的对立统一。遇到的第一个“慢”的编译器也许是javac,但因为Java的特殊性,也就容忍了。真正接触到世间的“恶势力”,还要算是第一次使用GCC的时候……准确地说是MinGW。开源世界曾给我诸多惊喜,其一就是原转载 2010-12-13 08:55:00 · 339 阅读 · 0 评论 -
在代码中关闭autocad文档后立即删除文档的方法
<br />1、需求:在代码中调用acDocManager->closeDocument(pDoc)后,要求调用::DeleteFile()删除刚才关闭的文档。<br /> <br />2、问题:如果直接调用::DeleteFile(),会由于文件被占用而失败。这是由于虽然调用了closeDocument(pDoc),但是pDoc对象尚未析构,文件句柄尚未关闭(猜的)造成的。<br /> <br />3、解决方案:利用AcApDocManager类的反应器——AcApDocManagerReactor::d原创 2010-12-15 18:40:00 · 1538 阅读 · 0 评论 -
虚函数表
按照上面的分析,可以得出以下结论:pB指向的vptr是运行时赋值,因此达到了运行时绑定的效果。在A的构造函数中调用虚函数,即使B中改写了该虚函数,也无法调用到B的虚函数。因为此时B的构造函数还没执行,vptr还未被改写。原创 2010-11-10 11:12:00 · 326 阅读 · 0 评论 -
获取与文件扩展名关联的图标
// 文件名任意CString strFile = _T("any.") + strExt;SHFILEINFO shfi;memset(&shfi,0,sizeof(shfi));SHGetFileInfo(strFile, FILE_ATTRIBUTE_NORMAL, &shfi, sizeof(shfi), SHGFI_ICON|SHGFI_SMALLICON|SHGFI_U原创 2011-10-25 10:02:11 · 513 阅读 · 0 评论 -
关于CString的GetBuffer 和 ReleaseBuffe
转自:http://hi.baidu.com/yu_xiyan/blog/item/55876a09c906289ed0581bb1.html先来看看我下面的这段代码 使用上有什么问题:m_WeatherZone = "北京";m_szWeatherInfo = "多云转晴";m_szWeatherglass = "23~35度";.........转载 2012-02-20 11:43:48 · 621 阅读 · 0 评论