读孙鑫《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)
创建非模态对话框:

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);

转载于:https://www.cnblogs.com/xiajun/archive/2011/07/15/2282820.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值