正如标题所说...它们被视为不同的语言吗?例如,如果您使用 C++ 和 Objective-C++ 的组合编写了一个应用程序,您会认为它是用 C++ 和 Objective-C、C++ 和 Objective-C++ 还是全部三种语言编写的?
显然,C 和 C++ 是不同的语言,尽管 C++ 和 C 直接兼容,但 Objective-C++ 和 Objective-C 的情况如何?
From: https://en.wikipedia.org/wiki/Objective-C#Objective-C.2B.2B https://en.wikipedia.org/wiki/Objective-C#Objective-C.2B.2B
Objective-C++ 是 GNU 编译器集合的前端,它可以编译使用 C++ 和 Objective-C 语法组合的源文件。 Objective-C++ 向 C++ 中添加了 Objective-C 向 C 中添加的扩展。由于没有采取任何措施来统一各种语言功能背后的语义,因此存在某些限制:
- C++ 类不能从 Objective-C 类派生,反之亦然。
- C++ 命名空间不能在 Objective-C 声明内声明。
- Objective-C 类不能拥有没有默认构造函数或具有一个或多个虚拟方法的 C++ 类的实例变量,但指向 C++ 对象的指针可以不受限制地用作实例变量(在 -init 方法中用 new 分配它们) )。
- C++“按值”语义不能应用于只能通过指针访问的 Objective-C 对象。
- Objective-C 声明不能位于 C++ 模板声明内,反之亦然。但是,Objective-C 类型(例如 Classname *)可以用作 C++ 模板参数。
Objective-C 和 C++ 异常处理是不同的;每个处理程序都无法处理另一种类型的异常。
- 必须小心,因为 Objective-C 和 C++ 的异常运行时模型的析构函数调用约定不匹配(即,当 Objective-C 异常退出 C++ 对象的范围时,不会调用 C++ 析构函数)。新的 64 位运行时通过引入与 C++ 异常的互操作性解决了这个问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)