Objective-C proporciona funcions orientades a objectes per al desenvolupament d'aplicacions Macintosh, com ara l'herència i el polimorfisme. El llenguatge es basa en el llenguatge de programació C; per tant, podeu utilitzar els vostres coneixements de programació en C per codificar dins de Objective-C. Objective-C++ és un mecanisme de pont que permet als mòduls font Objective-C treballar amb classes Objective-C++, que podrien compilar i enllaçar amb biblioteques de codi C++.
El següent exemple senzill d'una matriu quadrada mostra el contingut d'un fitxer de capçalera C++ per a una classe Matrix. La classe Matrix ve amb el constructor i el destructor estàndard per a una classe C++, i els mètodes són els que espereu per a un objecte de matriu quadrada bàsica:
class Matrix { public: Matrix( int inSize ); virtual ~Matrix(); int getSize(vod); int getDeterminant(vod); void setElement( int inRow, int inCol, int inValue); int getElement( int inRow, int inCol ); Operador de matriu+( const Matrix& inAddend ); privat: int m_size; int[][] m_elements; };
Per utilitzar Objective-C++, els vostres mòduls de classe Objective-C++ han d'utilitzar l'extensió de fitxer .mm. Això indica al compilador de Xcode que la classe s'ha de compilar amb Objective-C++, que permetrà que la vostra classe utilitzi paraules clau del llenguatge C++. Amb Objective-C++, la vostra aplicació podria crear un objecte Matrix per realitzar operacions bàsiques, com ara afegir dos objectes Matrix junts. Això suposa que el mòdul font Objective-C++ ha #importat el fitxer C++ Matrix.h:
- (void)addTwoMatrices { Matrix matrixOne( 3 ); // 3x3 matrix Matrix matrixTwo( 3 ); // un altre int rowIndex = 0; int colIndex = 0; for (rowIndex=0; rowIndex<3; ++rowIndex) { for (colIndex=0; colIndex<3; ++colIndex) { // estableix els elements de la matriu als seus valors matrixOne.setElement( rowIndex, colIndex, XXX ); // estableix els elements de la matriu dos amb altres valors matrixTwo.setElement( rowIndex, colIndex, YYY ); } } Matriu matriuSuma = matriuUna + matriuDos;
Amb Objective-C++, les vostres aplicacions poden aprofitar totes les biblioteques de tercers disponibles escrites per a C++.