作者cole945 (躂躂..)
看板C_and_CPP
标题Re: [问题] 无痛GUI = =?
时间Tue Oct 10 14:48:46 2006
推 embedded:想问一个问题,为什麽MS老是喜欢创C#或是一些怪怪的C语法?
→ embedded:反倒是GNU或是其他免费的都还适用正规的C/C++,但也是可达
→ embedded:相同的效果
→ embedded:我是想知道搞成managed有什麽好处? 就我看到的结果似乎
→ embedded:只有效能小降低+吃RAM
要managed就因为要做Garbage collection..
写C/C++时..一时没注意new出来的东西没free掉..就会memeory leak..
他的目的就跟Java一样..不需要explicit的delete语法..而是由GC来回收
那为什麽 Managed C++ 会多出那些奇怪的东西..
原因之一是 Managed C++ 是故意设计成同时支援 managed/unmanaged ..
例如在 Managed C++
你想使用 Point 这个class可以有三种方式产生他
Point P1 = Point();
Point *P2 = new Point();
Point ^P3 = gcnew Point();
因为 Point 是value-type的..所以你可以直接用第一种方式产生区域变数
第二种是用 unmanaged 的方式new出来..所以要记得 delete 掉..
第三种是用 managed 的方式..用gcnew出来..後面没refernece到的话..
自然会被回收到..
为了同时支援managed/unmanged code..所以Managed C++才会变这麽丑..
所以其实不建议用C++配.NET在写..
像C#或其他的.NET支援的语法..
都只会有一种写法..
Point P = new Point();
个人不觉得一家公司 ``自创'' 一个语言是什麽负面的事(我指C#)..
Sun也发明了Java不是吗??
Managed Extensions for C++
http://en.wikipedia.org/wiki/C++_Managed_Extensions
这篇有提到到一些优缺比较..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.131.212
※ 编辑: cole945 来自: 220.139.131.212 (10/10 14:50)
1F:推 yoco315:推荐这篇文章 10/10 16:05
2F:推 deuter:挑个小错, 应该是 C++/CLI 10/11 12:29
3F:→ deuter:Managed C++ 是 .NET 1.1 10/11 12:31
4F:→ cole945:感谢楼上说明@_@"因为我没在写..所以不清楚正确的名称orz 10/11 13:04