托pipec + +和c + +之间的区别

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

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

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

托pipeC ++是为了简化从传统C ++到.NET Framework的转换。 不打算用于启动新项目(首选C#)。

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

你可以用两种不同的方式编写本地C ++。 首先是直接编译到机器代码,只有你和平台(硬件)之间的操作系统。 第二个本地编码是使用MFC(Microsoft基础类)完成的。 除了使用MFC之外,这与第一个例子相同。

托pipeC ++使用CLR(公共语言运行时)CLR与.net框架类库组成.NET Framework。 这个托pipe的C ++ / CLI标准使用.Net框架和MSIL(Microsoft中间语言)。 只有当程序正在执行时,这个标准才能通过映射到机器代码来工作。 如果您的代码将运行在不同的硬件平台上,使用托pipe代码将会更容易。 和所有的东西一样,为了方便起见,要付出很小的代价,因为本地代码运行得更快。

我想你应该看看这个问题 。

托pipeC ++意味着内存分配,pipe理,垃圾回收由虚拟机处理。 而在“常规”C ++中,您将不得不分配和释放内存。

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