主题标题实际上是我的问题。第二个问题是:我什么时候使用这两个?

有帮助吗?

解决方案

如果未指定,C ++是非托管C ++,编译为机器代码。在非托管C ++中,您必须手动管理内存分配。

托管C ++是Microsoft发明的一种语言,它编译为.NET Framework运行的字节码。它使用与C ++(因此名称)大致相同的语法,但编译方式与C#或VB.NET相同;基本上只有语法改变,例如使用' - >'指向一个对象的成员(而不是C#中的'。'),使用'::'表示命名空间等。

托管C ++旨在简化从经典C ++到.NET Framework的过渡。它不能用于启动新项目(首选C#)。

其他提示

“托管C ++”指的是Visual Studio.NET/VisualStudio.NET 2003中包含的语言。它一直是已弃用,最新的.net C ++为C ++ / CLI。

您可以通过两种不同的方式对本机C ++进行编码。第一种是直接编译机器代码,仅使用您和平台(硬件)之间的操作系统。第二个本机编码是使用MFC(Microsoft基础类)完成的。除了使用MFC之外,这与第一个示例相同。

托管C ++使用CLR(公共语言运行时)CLR和.net框架类库组成.NET Framework。此托管C ++ / CLI标准使用.Net框架和MSIL(Microsoft中间语言)。该标准仅在程序通过使用及时编译器执行时映射到机器代码。如果您的代码将在不同的硬件平台上运行,那么托管代码的使用将变得更加容易。与所有事情一样,为方便起见需要付出轻微的代价,因为本机代码运行得更快。

我认为你应该看一下这个问题

托管C ++意味着内存分配,管理和垃圾收集由虚拟机处理。而在“常规”中, C ++你必须分配和释放内存。

当您想要使用托管代码中的本机C ++类库时,您将使用托管C ++。在这种情况下,您将非托管类包装在托管C ++中,然后在任何CLR语言中使用它们。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top