永发信息网

C++中的创建实例问题,请进

答案:4  悬赏:60  手机版
解决时间 2021-03-17 15:56
我想问一个C++中的简单问题。
在C++中非模式话的show一个窗体,是如下代码:
Processdlg *p=new Processdlg();
p->Create(IDD_DIALOG,this);
p->ShowWindow(SW_SHOW);
Processdlg是一个窗体类,编译,成功Show出这个对话框。
但是我改成:
Processdlg p=new Processdlg();
p.Create(IDD_DIALOG,this);
p.ShowWindow(SW_SHOW);
编译没错,但是运行后,窗体一闪就没了,我很是不明白,这两者有什么分别吗?
我现在搞C#,不搞C++已经有一年多了,C++基础的东西都忘了,还望高手能够指点下,谢谢了。

那C#中怎么可以这样呢?请问你知道C#中是怎么维护这个new的吗?C#中new出来的应该也是内存地址吧,怎么可以赋给类实例。

3L的高手,我已经留言给你了,那我还想问你个问题:
在C++中,new Processdlg()返回的是一个指针,那么在C#中,new Processdlg()返回的是什么呢?请指教。
最佳答案
第一:Processdlg p=new Processdlg();//这句错了,原因楼上说了。
第二:这个应该是你要问的,一个是局部变量,一个是局部指针,但指针里面保存的是堆的东东的地址,你搞C#应该也知道堆栈的区别吧!局部变量,在局部作用区中有效,也就是保存在栈里,运行完这部分,就被清掉了,所以会消失,但堆里的东西只有自己删除了才会消失,不删除就造成内存泄露了!

补充:在C++中,new Processdlg()返回的是一个指针,那么在C#中,new Processdlg()返回的是什么呢?请指教
这个问题,我无法回答,C#我只是了解了基本的语法,其它深一点的我不懂!你得自己去查查了!这种语言问题,你应该多去CSDN论坛逛,我也一般在那混!
全部回答
Processdlg p=new Processdlg(); p.Create(IDD_DIALOG,this); p.ShowWindow(SW_SHOW); 你的p是局部变量,p.ShowWindow(SW_SHOW);函数都返回了,要销毁栈中的变量,窗口也就销毁了吧。而你的*p是个窗口指针,指针销毁了,窗口还在的。
Processdlg p=new Processdlg(); p.Create(IDD_DIALOG,this); p.ShowWindow(SW_SHOW); 在C++中,这从语法上就是错误的,怎么能编译成功呢? new Processdlg()返回一个Processdlg*,怎么能赋值给一个Processdlg呢? ----------------- C#中,new Processdlg()返回一个Processdlg对象的引用。 ---------------- C#中不需要删除对象,因为有垃圾收集器,但是C++没有,需要自行删除。
类型不对,一个是指针,一个是实例
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎样写丧事谢贴???
三轮车上的大电瓶像汽车电瓶一样的四块是多少
安卓有没有什么软件可以对视频隐藏和加密?
江海私房菜怎么去啊,有知道地址的么
我认为柏万青不该做老娘舅这当节目、有时过激
佳家门业在什么地方啊,我要过去处理事情
Wow 诺森德的急救训练师在哪?
含有英文歌词 onlyyoucando,somuch 的英文歌
西江月秋兴赏析
双柏树街地址在什么地方,想过去办事
我想和女同事偷情,我该怎么办?
加什么部首可以使今,土,欠,力,组成一个新
有没有人是魅族版本玩的
1980年版五角人民币价值多少钱
打印机上显示机械故障,维修召唤,怎么解决
推荐资讯
学医考研专业型346分好不好
环评批复,可研批复等行政审批手续是什么意思?
维沃手机吉林榆树售后电话
电瓶充电时正负极接反了会把电瓶烧坏吗
谁用过王溶去红血丝,管用吗?
超过五万字的超神学院小说
镇江自驾到无锡灵山大佛怎么走
鲁冰花饭店在哪里啊,我有事要去这个地方
putthemtobed是什么意思
偶女,八字:辛酉癸巳壬子辛丑(或壬寅),父
iphonewatch怎么佩戴
公交总站40分钟发出5辆2路公共汽车(发车间隔
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?