托管C ++和C ++之间的区别
主题标题实际上是我的问题。第二个问题是:什么时候使用这两个中的什么?
解决方案
托管C ++意味着内存分配,管理,垃圾回收由虚拟机处理。而在"常规" C ++中,我们将不得不分配和取消分配内存。
我认为我们应该看这个问题。
如果未指定,则C ++是非托管C ++,已编译为机器代码。在非托管C ++中,我们必须手动管理内存分配。
托管C ++是Microsoft发明的一种语言,可编译为.NET Framework运行的字节码。它使用的语法几乎与C ++相同(因此得名),但其编译方式与Cor VB.NET相同。基本上只改变语法,例如使用"->"指向对象的成员(而不是C#中的"。"),使用" ::"表示名称空间等。
托管C ++的创建是为了简化从经典C ++到.NET Framework的过渡。它不打算用于启动新项目(Cis优先)。
"托管C ++"是指Visual Studio.NET/VisualStudio.NET 2003中包含的一种语言。此后已弃用,最新的.net C ++为C ++ / CLI。
要使用托管代码中的本机C ++类库时,将使用托管C ++。在这种情况下,我们可以将非托管类包装在托管C ++类中,然后在任何CLR语言中使用它们。
我们可以使用两种不同的方式对本机C ++进行编码。第一种是仅使用我们和平台之间的操作系统(硬件)直接编译为机器代码。第二种本机编码是使用MFC(Microsoft Foundation Classes)完成的。除使用MFC之外,其他均与第一个示例相同。
托管C ++使用CLR(公共语言运行时)CLR与.net框架类库一起构成.NET Framework。此托管C ++ / CLI标准将.Net框架与MSIL(Microsoft中间语言)一起使用。该标准仅在使用即时编译器执行程序时才通过映射到机器代码来工作。如果代码将在不同的硬件平台上运行,则托管代码的使用将更加容易。与所有事物一样,为方便起见,需要付出一点代价,因为本机代码将运行得更快。