Objective C ++ полностью другой язык от Objective C?

Поскольку в заголовке говорится..., что их считают различными языками? Например, если бы Вы записали приложение с помощью комбинации C++ и Objective C ++, Вы полагали бы, что это записано в C++ и Objective C, C++ и Objective C ++ или все три?

Очевидно, C и C++ являются различными языками даже при том, что C++ и C непосредственно совместимы, как ситуация с Objective C ++ и Objective C?

13
задан Jake Petroules 15 June 2010 в 00:52
поделиться

5 ответов

Objective-C ++ просто позволяет смешивать код Objective-C и C ++ (с оговорками).На самом деле это не столько сам по себе язык, сколько механизм, позволяющий двум языкам смешиваться.

5
ответ дан 1 December 2019 в 21:37
поделиться

От: 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 ++ могут использоваться как переменные экземпляра без ограничений (выделите их с помощью new в -init метод).
  • Семантика C ++ "по значению" не может применяться к объектам Objective-C, доступ к которым возможен только через указатели.
  • Объявление Objective-C не может находиться в объявлении шаблона C ++ и наоборот. Однако типы Objective-C (например, Classname *) могут использоваться как параметры шаблона C ++.Обработка исключений Objective-C и C ++ отличается; обработчики каждого из них не могут обрабатывать исключения другого типа.
  • Следует проявлять осторожность, поскольку соглашения о вызове деструкторов моделей времени выполнения исключений Objective-C и C ++ не совпадают (т.е. деструктор C ++ не будет вызываться, когда исключение Objective-C выходит из области видимости объекта C ++). Новая 64-разрядная среда выполнения решает эту проблему, обеспечивая взаимодействие с исключениями C ++ в этом смысле
11
ответ дан 1 December 2019 в 21:37
поделиться

C и C++ не являются непосредственно совместимыми. Ни один из них не является надмножеством другого (хотя большинство языков C являются действительными языками C++). Objective-C является строгим супермножеством C, а Objective-C++ является строгим супермножеством C++. Это единственные утверждения, которые вы можете сделать (кроме тривиально обратного).

4
ответ дан 1 December 2019 в 21:37
поделиться

Трудно уверенно ответить на этот вопрос, не понимая, какое определение "другого языка" вы хотите применить.

Objective-C - это супермножество языка C: он добавляет некоторый дополнительный синтаксис поверх языка C. Objective-C++ является супермножеством C++ таким же образом.

C и C++ - это фактически разные языки. Хотя C++ разработан для совместимости, существует некий C, который не является действительным C++, и наоборот.

Поэтому я бы сказал, что да, Objective-C++ отличается от Objective-C, потому что C++ отличается от C. Однако я бы не назвал их совершенно разными.

2
ответ дан 1 December 2019 в 21:37
поделиться

Objective-C, вероятно, официальный термин, который вы бы использовали в резюме.

Objective-C ++ на самом деле не новый язык, он просто определяет несколько вещей, которые позволяют коду Objective-C сосуществовать с кодом C ++. Сказать, что ваше приложение написано на Objective-C и C ++ или просто на Objective-C ++ - это, вероятно, то, что вы хотите. Помещение всего Objective-C, Objective-C ++, C ++ является избыточным.

1
ответ дан 1 December 2019 в 21:37
поделиться