mfc中关于构造函数的问题,谢谢回答

来源:百度知道 编辑:UC知道 时间:2024/05/18 01:48:18
我在函数中写了这样一段代码:
CTestDialog dlg;
dlg.DoModal();

在mfc中,声明一个对象,难道不需要这样吗:
CTestDialog dlg =new CTestDialog();//大致是这个意思

dlg似乎只是做了声明,就开始调用成员函数了。
谢谢大家,以投票的方式 决定

一般是这样用的。
CTestDialog *dlg =new CTestDialog();

若是这样
CTestDialog dlg;
则dlg已经是实例了。

只要这样
CTestDialog dlg;

就调用构造函数了。
声明一个变量就会调用构造函数,即使是
CTestDialog *dlg =new CTestDialog; //注意最后没有括号

这样也会调用构造函数。
如楼上所说,c++里面只有用指针变量的时候才会使用new分配空间,普通变量是不需要new的,只要声明了就会调用构造函数。同时,用指针new出来的对象要在最后delete掉,才能释放内存空间,否则会造成内存泄漏。

看来楼主是从JAVA或者C#转型过来的,什么变量都要new一下。
在C++里,只有为指针变量分配指向空间时才用new