gpt4 book ai didi

c++-cli - C++/CLI:Console::WriteLine() 还是 cout?

转载 作者:行者123 更新时间:2023-12-04 03:43:36 25 4
gpt4 key购买 nike

我要回学校,在那里我们必须参加 C++ 类(class)。
我熟悉这门语言,但有些事情我从未听说过......

一般来说,我的老师说普通的 C++ 是“不安全的”。它会生成“不安全代码”(无论这意味着什么)。这就是为什么我们必须使用 C++/CLI 来制作“安全”代码。

现在... CLI 不只是 Microsoft .NET 扩展吗?

他还告诉我们使用 Console::WriteLine()而不是 cout .自 Console::WriteLine()是“安全的”和 cout是“不安全的”。

这一切对我来说似乎很奇怪......有人可以澄清这一点吗?

谢谢!

最佳答案

说的很直白很简单。
安全的
您老师所说的“安全代码”可能是指 托管代码 .那是您不必“关心”指针和内存的代码,您有一个垃圾收集器来为您处理这些。你正在处理引用。像这样构建的语言的例子是 java 和 c#。代码被编译为“虚构的”操作码(中间语言,C# 的 IL),并实时编译和运行(JIT,即时编译)。 IL 生成的代码必须转换为真正的基于 native 平台的操作码,在 Java 中,这是 jvm 所做的事情之一。您可以轻松地从这些语言中反汇编代码。它们可以在多个平台上运行而无需重新编译。
不安全
老师所说的“不安全代码”指的是普通的原生c++ 非托管代码 ,所有内存和资源管理都由您处理。这为人为错误、内存泄漏、资源泄漏和其他内存错误留出了空间,您通常不会在托管语言中处理这些错误。它还编译为纯字节码( native 汇编操作码),这意味着您必须为您打算针对的每个平台编译代码。您将遇到必须为每个平台编写大量代码,具体取决于您要编写的代码。很高兴看到像线程这样简单的东西,它依赖于平台,现在是 c++ 标准的一部分。
然后你有 C++/CLI,它基本上是一个混合。您可以在 c++ 中使用 .net 框架中的托管代码,它可以用作桥梁,并用于制作包装器。Console::WriteLine()是托管.net 代码,安全。cout是来自 <iostream> 的标准 iso c++ , 不安全
You find a related post here, with a broader answer herehere :)
编辑
正如下面的 Deduplicator 所指出的那样 is also of interest for you
希望能帮助到你。
干杯

关于c++-cli - C++/CLI:Console::WriteLine() 还是 cout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26060596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com