随笔分类 - cpp
摘要:1 第七章 模板术语 1.1 类模板还是模板类 在c++中,类和联合都被称为类类型。 l 类模板(class template):该类是个模板,它代表的是:整个家族的参数化描述; l 模板类(template class): n 作为类模板的同义词; n 从模板产生的类; n 具有一个templa...
阅读全文
摘要:1 第六章 模板实战 从某种意义上讲,模板是位于宏和普通声明之间的一种构造。 1.1 包含模型 我们可以用几种方法来组织模板源代码,其中最常用的就是包含模型。 所谓包含模型,其实可以有三种组织方式: l 直接在头文件中采用内联函数的编写方式来写模板类和模板函数;(通过我在VS2005上做实验,目前只支持这种模型) l 申明和定义分开,但是都...
阅读全文
摘要:1 第五章 技巧性基础知识 1.1 关键字typename 在标准化c++的过程中,引入typename是为了说明:模板内部的标识符可以是一个类型。下面举个例子: template class MyClass{ typename T::SubType * ptr; .. }; 1.1.1 .templates构造 这个比较生僻一些,给个例子吧 tem...
阅读全文
摘要:1 第四章 非类型模板参数 对于函数模板和类模板,模板参数并不局限于类型,普通值也可以作为模板参数。 1.1 非类型的类模板参数 例如: Template Class Stack{ Private: T elems[MAXSIZE]; … }; Int main() { Stack int20Stack; Stack int40S...
阅读全文
摘要:1 类模板 1.1 类模板的声明 类模板的定义和实现都被放在头文件中,这点和函数模板类似。 Template Class Stack{ Private: Std::vector elems; Public: Stack(); Void push(T const&); Void pop(); … }; 这个...
阅读全文
摘要:1 函数模板 1.1 初探函数模板 函数模板的定义 templates …. l 模板函数会进行实参演绎,所以在使用函数模板的时候,一般不需要制定参数的类型。 l 就编译原理来说,并不是把模板编译成一个可以处理任何类型的单一实体,而是对于实例化模板参数的每种类型,都从模板产生出一个不同的实体。 l 如果试图基于一个不支持模板内部所使...
阅读全文
摘要:l 适用性 n 类的抽象以及他的实现都应该可以通过生成子类的方法加以扩充。 n 如果任何一种扩展都会导致类以几何级数来增长,这就说明你需要将一个对象分解为两个部分,这种类层次称为“嵌套的普化 nested generalizations”; l 一般来讲,Implementor只提供一些基本操作,而Abastraction则定义...
阅读全文
摘要:声明:本文2004年5月首发于《CSDN开发高手》,版权归该杂志与《程序员》杂志社 所有。 ------------------------------------------------------------------------ -------- 1,前言 无数次听到“我要开始学习C++!”的呐喊,无数次听到“C++太复杂了,我真的 学不会”的无奈。Stan Lippman先...
阅读全文
摘要:当出现没有定位符的内存泄露时,可以考虑是否是由于由于没有将父类的析构函数设置为虚拟函数导致的。 比如今天在编写PecsviewerDBAccess.dll时出现了这样的内存泄露: {21329} normal block at 0x04FE64C0, 130 bytes long. Data: A0 6C 65 00 C8 62 FE 04 .... 经过查找,就是由于接口...
阅读全文
摘要:一般来说,通过rebuildall菜单项重新编译一下就可以了。
阅读全文
摘要:转摘:http://blog.csdn.net/prolibertine/archive/2006/12/19/1448426.aspx 编译程序时放在符号表里的不光是内存地址和函数/变量的对应关系,还有很多在编译时要用到的信息。比如该节点的各种属性(类型,作用域,分配空间大小,(函数)的参数类型)等等。符号表与编译的各个阶段都有交互。对符号表的具体使用方法每个编译器都不同。 ...
阅读全文
摘要:每一C 程序都必须有一main()函数,可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的。 1. main() 参数 在Turbo C2.0启动过程中,传递main()函数三个参数:argc,argv和env。 * argc: 整数,为传给main()的命...
阅读全文
摘要:会出现这种问题,一般是由于在程序中直接或者间接的同时引用了 #include 和#inclued 这两个一个是c++标准化之前的,一个是标准化之后的 然后如果你又刚好在程序中使用了using namespace std; 这样编译期就无法区别到底是要用哪个stream了。 比如这次,我在ado2.h中, #include 同时又using namespace st...
阅读全文
摘要:假设一个对话框内有多个RadioButton,分别为:IDC_RD_CHART1,IDC_RD_CHART2,IDC_RD_CHART3; 那么,需要做以下设置: 1、通过Ctrl+D,将这三个控件的tabindex设置为连续,假设分别为1,2,3; 2、将tabindex最小的那个控件的group属性设置为true,在这里为IDC_RD_CHART1,其他两个设置为false; ...
阅读全文
摘要:使用RichEdit有以下几点注意事项; 1、在应用程序的InitInstance()内要调用AfxInitRichEdit(); 2、如果想让RichEdit在显示文本的时候能够自动换行,则需要将以下四个属性设置Horizontal Scroll, Multiline , Vertical Scroll, Want return 设置为true; 并且还要调用如下函数来对Ric...
阅读全文
摘要:1、 要让ListCtrl的每一行的第一列为CheckBox,需要做如下设置: listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyle()|LVS_EX_CHECKBOXES); 2、 为了限制ListCtrl只能有一行的CheckBox处于选中状态,则需要: 响应ListCtrl的 LVN_ITEMCHANGED 消息: ...
阅读全文
摘要:也就是实现类似下面的功能: 1CString str;2double d = 10.24;3str.Format("d=%.2f",10.24); 其实用c++标准库来实现也比较简单,代码如下: #include using namespace std;..ostringstream buf;double d = 10.24;buf<<"d="<<d<<endl; 则buf.str()得到的就是一...
阅读全文
摘要:如果对话框是正常定义的,可是在使用的时候出现这样的错误的话,一般是由于没有将app的头文件加入到使用该对话框类的cpp文件中。
阅读全文
摘要:下面是MSDN的提示: Remarks It is not recommended that you add and subtract values from the SYSTEMTIME structure to obtain relative times. Instead, you should ...
阅读全文
摘要:今天,在用MFC写一个工具软件的时候,用到了一个动态创建的组合框,当组合框中的菜单项比较多的时候,默认的组合框下拉菜单高度就显得不够了,为了能改变默认的下拉菜单高度到合适的位置,可以作如下操作: CRect rc; NewCombo.GetDroppedControlRect(&rc); NewCombo.GetParent()->ScreenToCl...
阅读全文

浙公网安备 33010602011771号