53

第二个问题是:我什么时候使用这两者中的哪一个?

4

6 回答 6

69

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

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

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

于 2008-09-22T11:05:01.593 回答
14

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

于 2008-09-22T11:30:46.993 回答
3

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

托管 C++ 使用 CLR(公共语言运行时)。CLR 与 .NET 框架类库组成了 .NET 框架。此托管 C++/CLI 标准使用 .NET 框架和CIL(Microsoft 中间语言)。该标准仅在使用即时编译器执行程序时通过映射到机器代码来工作。如果您的代码将在不同的硬件平台上运行,则托管代码的使用会容易得多。与所有事情一样,为了方便需要付出一点代价,因为本机代码会运行得更快。

于 2008-09-22T20:01:25.487 回答
2

我想你应该看看这个问题

于 2008-09-22T11:04:45.510 回答
1

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

于 2008-09-22T14:51:15.390 回答
0

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

于 2008-09-22T10:59:45.740 回答