(1)Cmyclass myclass;与Cmyclass * myclass=new Cmyclass()的声明有何不同?后者有什么优点?
(2)在使用对话框类的Domodal(),有没有调用构造函数,对话框是怎么显示出来的呢?
(2)在使用对话框类的Domodal(),有没有调用构造函数,对话框是怎么显示出来的呢?
解决方案 »
- 如何连接两个字符串变量?
- 请问有CString 转char数组的方法吗?
- dll的全局变量不共享?
- 如何使鼠标点击ListCtrl某行时,该行不高亮,不变蓝?
- 难道线程无法访问全局变量吗?大家线程之间的共享数据都怎么解决?
- 如何解析CVT100协议!急!
- 请问如何在VC中调用系统的邮件客户端发送邮件和直接打开指定网页?
- 请问我该如何初始化一个类中的成员对象?
- mfc如何从数据库(mysql)中读取图片并获得图片的句柄在数据库中是二进制
- 从CString到 char*怎么转换?
- lionelyao请进
- pqmagic 转换文件系统ntfs->fat32 提示 'bad system file name' 如何解决.
就是这个时候
CDialog dlg;而Domodal()只是dlg的一个成员函数,它负责显示对话框。
Cmyclass myclass; 表示已经生成了这个空间,会执行他的构造函数,
离开定义域后,会执行析构函数。Cmyclass * myclass=new Cmyclass();
可以分成两步:
Cmyclass * myclass; // (1)
myclass=new Cmyclass(); // (2)
第一步只是定义,没有生成这个类的空间,如果此时去访问这个类的成员函数或者修改
它的成员变量,会出现错误(没有空间,怎么可能访问?)
第二步:生成了空间,可以访问了,并且执行构造函数,
只有在delete myclass的时候,才会执行析构函数。
CAboutDlg aboutDlg; // (1)
aboutDlg.DoModal(); // (2)
在执行(1)的时候调用构造函数,原因就如我上面讲的。
对话框是在执行aboutDlg.DoModal(); 以后出来的。
记得new要和delete配对。