C++/CLI Basic

1. Why need it?

Mainly it works as the bridge between managed code and native c++ code, as it's the only graceful way to be able to talk to both sides.

Using /cli compiler option, it can generate mixed code to benefit below cases:

1.相信大多数公司都有一些旧的C++代码。在C++大行其道的时代,我们在C++上已经进行了大量投资,也许也产生了不少稳定的产品。在.NET大潮汹涌的今天,我们有必要重写这些代码吗?当然没有必要,要知道Legacy代码,并非指代码有问题,相反大多数这样的代码是成熟的产品,也经过了多外的检测。如果重写的话,不说工作量有多少,Bug肯定会引入不少,还要重新进行测试。可以说是出力不讨好。

2.dotNET的出现不会把C++逼入绝境,在一些对速度有要求的场合如算法的实现,模式的识别,驱动程序等,还得要C++。任意语言都不是完美的。虽然我们都在追求完美,但是完美并不存在。所以我们也要进行一些权衡。

3. 有时我们需要的第三方软件只有C++接口,我们没有源代码,所以我们没有重写代码的可能。但我们通过C++/CLI可以写一个Wrapper来供.NET使用。

4. 有时出于代码安全性考虑,把一些敏感算法用非托管代码实现,毕竟托管代码很容易被反编译

 

2. Basic Syntax

1. ref/ value

ref /value class / struct: reference type + value type.

2.Boxing / unboxing

                (example)

                int i =123;

                int^ hi= i;

                int c =*hi;

                hi =nullptr;

3. new keywords

gcnew: allocate reference type object onto managed heap.

Type^:declare a handle that just like CSharp reference and C++ native pointer.

reference: http://msdn.microsoft.com/en-us/library/ms379617(VS.80).aspx

posted @ 2010-03-10 13:47  能巴  阅读(244)  评论(0编辑  收藏  举报