gpt4 book ai didi

c++ - Objective-C++ 是与 Objective-C 完全不同的语言吗?

转载 作者:IT老高 更新时间:2023-10-28 21:41:17 27 4
gpt4 key购买 nike

正如标题所说...它们被认为是不同的语言吗?例如,如果您使用 C++ 和 Objective-C++ 的组合编写了一个应用程序,您会认为它是用 C++ 和 Objective-C、C++ 和 Objective-C++ 编写的还是同时使用这三种语言编写的?

明明C和C++是不同的语言,虽然C++和C是直接兼容的,但Objective-C++和Objective-C的情况如何?

最佳答案

发件人:https://en.wikipedia.org/wiki/Objective-C#Objective-C.2B.2B

Objective-C++ 是 GNU Compiler Collection 的前端,它可以编译使用 C++ 和 Objective-C 语法组合的源文件。 Objective-C++ 向 C++ 添加了 Objective-C 对 C 的扩展。由于没有做任何事情来统一各种语言特性背后的语义,因此存在某些限制:

  • C++ 类不能派生自 Objective-C 类,反之亦然。
  • 不能在 Objective-C 声明中声明 C++ 命名空间。
  • Objective-C 类不能具有没有默认构造函数或具有一个或多个虚方法的 C++ 类的实例变量,但指向 C++ 对象的指针可以不受限制地用作实例变量(在-init 方法)。
  • C++“按值”语义不能应用于 Objective-C 对象,这些对象只能通过指针访问。
  • Objective-C 声明不能在 C++ 模板声明中,反之亦然。但是,Objective-C 类型(例如 Classname *)可以用作 C++ 模板参数。Objective-C 和 C++ 的异常处理是不同的;每个的处理程序都不能处理其他类型的异常。
  • 必须小心,因为 Objective-C 和 C++ 的异常运行时模型的析构函数调用约定不匹配(即,当 Objective-C 异常退出 C++ 对象的范围时,不会调用 C++ 析构函数)。新的 64 位运行时通过在这个意义上引入与 C++ 异常的互操作性解决了这个问题

关于c++ - Objective-C++ 是与 Objective-C 完全不同的语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3041925/

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