读孙鑫《VC++深入详解》随笔

【1】(page38)

重载构成的条件:函数的参数类型、参数个数不同。分析以下2种情况:

第一种:1、void output();2、int output();

第二种:1、void output(int a,int b=5);2、void output(int a);

对于第一种情况,只有函数的返回类型不同是不能构成重载的。对于第二种情况,当我们在程序中调用output(5)时,应该调用哪个函数呢?调用1当然是可以的。因为1的函数第二个参数有一个默认值。当然也可以调用第二个函数。有与调用有歧义,因此这种情况不能构成重载函数。

在函数重载时,要特别注意函数带有默认参数的情况。

【2】(Page226)
创建非模态对话框:

发现对话框并不出现。因为创建的非模态对话框对象dlg是一个局部对象,当OnDialog函数执行完毕时,dlg的生命周期也结束。那为什么模态对话框可以使用局部对象呢?因为在创建模态对话框时,程序执行到DoModal函数以显示对话框时,程序会暂停执行,直到对话框关闭。因此,在创建非模态对话框时,不能把对话框声明为局部对象。对于这个问题,有2种解决方案:一是把对话框对象定义为视类的成员变量;二是将它定义为指针,在堆上分配内存。在堆上分配内存,与程序的整个生命周期是一致的。后一种方式的代码:


posted on 2011-07-15 10:56  江南烟雨hust  阅读(343)  评论(0编辑  收藏  举报

导航