1 new abc()是创建个临时对象吗?2 如果abc类是个窗体类 abc a = new() 后面需要 a.showwindow() 那用 new abc()时该怎么写showwindow()函数?
是在abc的构造函数中写吗?3 这两种方法各自的优势是什么,一般用在什么地方?
是在abc的构造函数中写吗?3 这两种方法各自的优势是什么,一般用在什么地方?
解决方案 »
- 解密邮件里面的Base64 遇到乱码了。其它正常。
- 基于Visual C++6.0的视频传送客户端出现乱码
- 100分请教DCOM问题,一起来讨论,送分!
- 错误码 10053 是怎么样产生的,请高手帮忙分析一下原因.
- 哪位大哥有ActiveX书籍的电子版阿?
- ################老问题开新帖 关于tab属性页控件的消息传送问题
- 有关udp通信的例子!
- 打印问题!!!,为什么打印的结果被预览的小,怎么调整呢????
- 关于追加MFC类(create by typeid)的疑惑
- IIS的ISAPI Filter DLL 产生堆栈溢出,如何增大堆栈尺寸?
- 服务程序与客户程序
- 关于Vector和迭代器的疑惑
我是看DuiLib开源界面库时遇到的:调用处
CRect rcWindow;
GetWindowRect(m_hWnd, &rcWindow);
rcWindow.top = rcWindow.top + msg.pSender->GetPos().bottom;
new ColorSkinWindow(this, rcWindow);类的构造函数:ColorSkinWindow::ColorSkinWindow(MainFrame* main_frame, RECT rcParentWindow)
: main_frame_(main_frame)
, parent_window_rect_(rcParentWindow)
{
Create(NULL, _T("colorskin"), WS_POPUP, WS_EX_TOOLWINDOW, 0, 0);
ShowWindow(true);
}
是不是要保存一个临时变量,是要看代码要求的,比如你要操作:
a->b->c->d->e;那你是不是觉得这样:
E e = a->b->c->d->e;
e->...
更好一点呢?
{
WindowImplBase::OnFinalMessage(hWnd);
delete this;
}
===========
问题是这种创建方式创建的对象如何引用呢?如何释放呢?
不应该这样写.
void ColorSkinWindow::OnFinalMessage(HWND hWnd)
{
CDUIWnd::OnFinalMessage(hWnd);
delete this;
}
abc *a = new abc();
2.(new abc())->ShowWindow(SW_SHOW),但构造函数里一定要Create否则无法显示
3.第一种方法比较罕见,正常情况下恐怕没人推荐,虽然我们的项目里有些地方用到这种方法了;第二种常见
就是函数需要一指针 。而直接用F(new abc())。
2.指针就这么new,对象实体初始化不用这么复杂abc a;就已经初始化了
3.看你怎么用了,new的生命周期都要自己控制的,不然就内存泄漏。实体会根据其位置来对应上生命周期。自动释放(主要会自动调用析构函数)
{
……
}
new Abc()这是在堆上分配内存,并调用类Abc的默认参数的构造函数,返回值是一个指向Abc实体的指针
其通常调用如下:
Abc * p = new Abc();或 Abc * p = new Abc;(调用Abc的默认构造函数)
p->showwindow(SW_SHOW);
对于Abc a = new()这种我没见过,估计编译会有问题,
若是
Abc a;
a.ShowWindow(SW_SHOW);
对象a处于栈内存中,其分配释放内存速度略快与堆内存。
您好,
由于您长时间不结贴,上一次答复已超一个月并且已有最佳答案,本人帮你结贴。
若是觉得答案不嘉,请放在本版的疑难杂症帖链接:
http://bbs.csdn.net/topics/390351579。
如果您有什么意见,请您联系我。