2010-09-27 16 views
12

Chcę poznać różnicę między C++ a celem-c oraz celem-C++. Może ktoś dać mi różnicy i możemy użyć C++ dla iPhone rozwojuJaka jest różnica między C++, cel-c i cel-C++?

Dziękuję Madan Mohan

+0

Objective-C++ ?! Nigdy o tym nie słyszałem. Czysty C++ jest "obiektywny", więc nie widzę żadnego powodu, aby Obj-C++ istniał. Proszę popraw mnie jeżeli się mylę. – rhino

+10

@rhino: Objective-C++ to po prostu Objective-C (i jego frameworki) z kodem C++. Pure C++ nie jest obiektywny, jest obiektowy. – BoltClock

+2

@rhino: jesteś w błędzie. –

Odpowiedz

27

C++ jest językiem Bjarne Stroustroup opartym na dodawaniu klas i metaprogramowania do C w taki sposób, że wkłada najwięcej dodatkowej pracy do kompilatora, i polega na najmniejszym możliwym wysiłku w środowisku wykonawczym.

Objective-C to język Brad Cox oparty na dodawaniu biblioteki uruchomieniowej dynamicznej przekazującej komunikaty w stylu SmallTalk do C, z niewielką ilością dodatków do składni, aby ułatwić jej używanie.

Objective-C++ to, mówiąc wprost, co można uzyskać po dodaniu środowiska wykonawczego Objective-C i składni do C++. Ma swoje ograniczenia (np. Nie można utworzyć podklasy Objective-C klasy C++ lub na odwrót, a Objective-C nie lubi przestrzeni nazw C++), ale pozwala na użycie klas C++ z obiektów Objective-C i na odwrót .

Możesz używać Objective-C++ w rozwoju iPhone'a. Oznacza to praktycznie, że można napisać aplikację, której modelem obiektowym jest całkowicie C++, gdzie warstwa kontrolera musiałaby współpracować z Objective-C, aby móc korzystać z interfejsów API Cocoa Touch.

+3

Dodam również, że Objective-C jest * ścisłym * nadzbiorem C, a C++ nie. https://secure.wikimedia.org/wikipedia/en/wiki/Compatibility_of_C_and_C%2B%2B –

+2

Objective-C++ to świetny sposób na wykorzystanie szablonów STL takich jak wektor i mapa - dla których nie ma dobrych, niskich kosztów analogi w kakao. – westsider

+0

) Można podać dowolny przykładowy kod, który zawiera zarówno Objective-C i C++. –

5

C++ i Objective C były/są dwa różne podejścia do dodawania orientację obiektu do C. Bieżący cel Kompilatory C również akceptują C++ jako dane wejściowe, więc możesz zbudować program z pewnymi plikami napisanymi w Objective-C i innych plikach napisanych w C++. Kiedy używa się C++ w ten sposób, często nazywa się Objective-C++.

+0

Dobra, dziękuję. Czy możemy użyć C++ do rozwoju iPhone'a –

+1

@Madan: Tak. Musisz użyć przynajmniej małego Celu C, w którym twój kod łączy się z wbudowanymi bibliotekami iPhone'a, ale możesz używać C++ do prawie wszystkiego innego. –

0

1) C++ to język wywodzący się z języka C, który dodaje funkcję Object Orientation (OO) do innych funkcji. *
2) Objective-C to język wywodzący się z C, który dodaje Object Orientation (OO) do innych funkcji. *
3) Objective-C++ jest Objective-C, z którego możesz korzystać z klas C++.

Możesz używać C++ do rozwoju iPhone'a, ale będziesz potrzebować "trochę" kodu Objective-C do połączenia z bibliotekami iPhone'a.

(*) Chociaż oboje starają się rozwiązać ten sam problem, robią to zupełnie inaczej. Jest kilka informacji na temat różnic w wikipedia i jestem pewien, że możesz użyć google, aby znaleźć więcej.

-4

Możesz używać C++ do rozwoju iPhone'a, ale będziesz potrzebować "trochę" kodu Objective-C do połączenia z bibliotekami iPhone'a.

To bardzo prawdopodobne, że dostaniesz kod i prawdopodobnie rozdęcie pamięci. Jak wiecie, programowanie na iOS powinno być możliwie najdłuższe: zminimalizować zarówno rozmiar biblioteki, jak i potrzeby pamięci runtime. Środowisko programowania i środowiska wykonawcze w języku iOS są również wysoce zoptymalizowane pod kątem Obiektywu Celu C.

Czysty ObjC jest znacznie lepszy niż C++ dla iOS. Chyba że próbujesz użyć istniejącej dużej bazy kodu w C++, prawdopodobnie lepiej będzie napisać od nowa. Prawie wszystkie C++ STL mają analogi w ramach iOS, często łatwiejsze w użyciu i wysoce zoptymalizowane przez Apple. Dowiedz się, jak zarządzać pamięcią C celu C, zapoznać się z ramami i przejść do niego.

+3

korekta: jeśli używasz obu języków bardzo dobrze, a rozmiar binarny i zużycie pamięci to twoje najważniejsze priorytety, C++ będzie zazwyczaj mniejszy w rozmiarze binarnym * i * zużyciu pamięci. dodatkowa premia: programy C++ będą generalnie wykonywać szybciej niż programy obstawione. nie przejmuj się przepisaniem istniejących programów C++ jako programów obstawiających. – justin

Powiązane problemy