读孙鑫《VC++深入详解》随笔
2011-07-15 10:56
204 查看
【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)
创建非模态对话框:
重载构成的条件:函数的参数类型、参数个数不同。分析以下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)
创建非模态对话框:
CTestDlg dlg; dlg.Create(IDD_DIALOG1,this); dlg.ShowWindow(SW_SHOW);发现对话框并不出现。因为创建的非模态对话框对象dlg是一个局部对象,当OnDialog函数执行完毕时,dlg的生命周期也结束。那为什么模态对话框可以使用局部对象呢?因为在创建模态对话框时,程序执行到DoModal函数以显示对话框时,程序会暂停执行,直到对话框关闭。因此,在创建非模态对话框时,不能把对话框声明为局部对象。对于这个问题,有2种解决方案:一是把对话框对象定义为视类的成员变量;二是将它定义为指针,在堆上分配内存。在堆上分配内存,与程序的整个生命周期是一致的。后一种方式的代码:
CTestDlg *pDlg=new CTestDlg; pDlg->Create(IDD_DIALOG1,this); pDlg->ShowWindow(SW_SHOW);
相关文章推荐
- VC++深入详解,疑问及知识点(孙鑫版)
- 阅读笔记——第二章——《VC++深入详解》————孙鑫
- 孙鑫VC++深入详解:Lesson3
- [连载]VC++深入详解(孙鑫视频)第5章-文本编程 笔记
- vc孙鑫视频随笔之三
- 孙鑫VC++深入详解:Lesson7 Part4 ---对话框上各个控件之间循环接受回车键获得焦点
- VC++深入详解(孙鑫)在VS2010学习中碰到的几个调试问题
- 《VC++深入详解》第三章74页的问题(孙鑫老师)
- 孙鑫老师VC++深入详解第一节课源代码(这样写更好理解)
- 《vc++深入详解》——孙鑫 学后感
- 孙鑫VC++深入详解:Lesson8 Part1---"逃跑"按钮的实现
- 《VC++深入详解,孙鑫》读书总结
- 孙鑫VC++深入详解:Lesson5 Part1 文本插入符Caret,位图插入符,窗口重绘
- 孙鑫 VC++深入详解第16课——线程同步与异步套接字编程
- 孙鑫VC++深入详解(1):windows程序内部运行机制
- 孙鑫VC++深入详解:Lesson5 Part2 路径层 CDC::BeginPath,BeginPath
- 孙鑫VC++深入详解:Lesson8 Part2---属性表单
- 孙鑫VC++深入详解之第一个简单win32窗体程序
- 孙鑫VC++深入详解(11):HOOK过程
- 阅读笔记《孙鑫-VC++深入详解》