2010-09-27 3 views
12

Я хочу знать разницу между C++ и объектами-c и объектно-C++. Может ли один дать мне разницу и можем ли мы использовать C++ для разработки iPhoneВ чем разница между C++, объектно-c и объектно-C++?

Спасибо, Мадан Мохан

+0

Objective-C++ ?! Я никогда не слышал об этом. Pure C++ 'is' object, поэтому я не вижу никаких оснований для существования Obj-C++. Пожалуйста, поправьте меня, если я ошибаюсь. – rhino

+10

@rhino: Objective-C++ - это просто Objective-C (и его фреймворки) с кодом C++. Pure C++ не объективен, он объектно-ориентирован. – BoltClock

+2

@rhino: вы ошибаетесь. –

ответ

27

C++ - это язык Bjarne Stroustroup, основанный на добавлении классов и метапрограммировании на C таким образом, который ставит большую часть работы в компилятор и полагается на минимальные усилия во время выполнения.

Objective-C - это язык Брэда Кокса, основанный на добавлении в C динамической библиотеки, передающей сообщения в стиле SmallTalk, с небольшим количеством добавления синтаксиса, чтобы упростить ее использование.

Objective-C++ - это, если честно, то, что вы получаете при добавлении среды выполнения и синтаксиса Objective-C на C++. Он имеет свои ограничения (например, вы не можете создать подкласс Objective-C класса C++ или наоборот, а Objective-C не любит пространства имен C++), но позволяет использовать классы C++ из объектов Objective-C и наоборот ,

Вы можете использовать Objective-C++ в разработке iPhone. Практически это означает, что вы могли написать приложение, объектная модель которого была полностью C++, где для использования интерфейса Cocoa Touch API для интерфейса контроллера необходимо было бы взаимодействовать с Objective-C.

+3

Я также добавлю, что Objective-C является * строгим * надмножеством C, а C++ - нет. https://secure.wikimedia.org/wikipedia/en/wiki/Compatibility_of_C_and_C%2B%2B –

+2

Objective-C++ - отличный способ использовать шаблоны STL, такие как вектор и карта, для которых нет хороших, недорогих аналоги в какао. – westsider

+0

) Может предоставить любой пример кода, который содержит как Objective-C, так и C++. –

5

C++ и Objective C были/есть два различных подхода к добавлению ориентации объекта на C. Текущая цель C компиляторы также принимают C++ в качестве входных данных, поэтому вы можете создать программу с некоторыми файлами, написанными в Objective-C и другими файлами, написанными на C++. Когда C++ используется таким образом, его часто называют Objective-C++.

+0

Хорошо, спасибо. Можем ли мы использовать C++ для разработки iPhone –

+1

@Madan: Да. Вам нужно использовать хотя бы немного Objective C, где ваш код взаимодействует с встроенными библиотеками iPhone, но вы можете использовать C++ для почти всего остального. –

0

1) C++ - это язык, полученный из C, который добавляет ориентацию объекта (OO) среди других функций. *
2) Objective-C - это язык, полученный из C, который добавляет Object Orientation (OO) среди других функций. *
3) Objective-C++ - Objective-C, с которым вы можете использовать классы C++.

Вы можете использовать C++ для разработки iPhone, но вам понадобится «некоторый» код Objective-C для взаимодействия с библиотеками iPhone.

(*) Хотя они оба пытаются решить ту же проблему, они делают это совершенно по-другому. Существует некоторая информация о различиях на wikipedia, и я уверен, что вы можете использовать Google, чтобы найти больше.

-4

Вы можете использовать C++ для разработки iPhone, но вам понадобится «некоторый» код Objective-C для взаимодействия с библиотеками iPhone.

Это, скорее всего, даст вам код и, возможно, раздутие памяти. Как вы знаете, программирование iOS должно быть как можно более быстрым: свести к минимуму как размер библиотеки, так и потребность в памяти во время работы. Программирование iOS и среды исполнения также оптимизированы для Objective C.

Pure ObjC намного лучше, чем C++ для iOS. Если вы не пытаетесь использовать существующую большую базу кода на C++, вероятно, лучше переписать ее с нуля. Почти все C++ STL имеют аналоги в iOS-инфраструктурах, часто проще в использовании и сильно оптимизированы Apple. Изучите управление памятью Objective C, ознакомьтесь с каркасами и займитесь этим.

+3

: если вы используете оба языка очень хорошо, а бинарный размер и потребление памяти - ваши главные приоритеты, C++ обычно будет меньше в двоичном размере * и * потреблении памяти. добавленный бонус: C++-программы обычно выполняются быстрее, чем программы objc. не переписывайте свои существующие программы на C++ в виде программ objc. – justin

Смежные вопросы