Az X++ programozási nyelv

Alprogramok, modulok

Szintaxis

A nyelv lehetőséget ad visszatérési értékkel rendelkező, illetve visszatérési értékkel nem rendelkező alprogramok, azaz metódusok létrehozására. A metódusok hasonlóak a c++ -ban megszokottakhoz. Visszatérési érték lehet void (üres), vagy bármely X++ -ban használható egyszerű elemi típus, vagy akár objektum is.

Paraméterátadás

Kétféle paraméter átadási lehetőség van: Érték szerinti : (nincs kulcsszó)
X++ elemi típusok automatikusan érték szerint kerülnek átadásra.

public int MethodName(int _x) { int x = 0; ; x += _x; return x; }

Hivatkozás szerinti: (nincs kulcsszó) X++ objektumok automatikusan cím szerint kerülnek átadásra.
public int MethodName(object _o) { object o; ; o = _o; o.strFieldValue = 'Hello world!'; return o; }

Metódus paramétereinek lehet alapértelmezett értéket adni. Ekkor a paraméterváltozó megadási helyén egyszerű értékadás operátorral kell az alapértelmezett értéket megadni.Ebben az esetben a paraméter opcionális paraméterré válik, vagyis metódushíváskor az érték megadása nem kötelező. Ez a fajta paraméteráttadás a hívás módjában hasonló a túlterheléshez.
Azonban metódus túlterhelés a nyelvben nincs. Tehát ugyanazon a néven több, de eltérő szignatúrájú függvény nem definiálható. Különböző osztályokban természetesen definiálhatunk azonos nevű és szignatúrájú metódusokat.

A névütközésekre nincs támogatás, tehát nem használhatunk névtereket, modulokat... Ezt azt jelenti, hogy az osztály nave a rendszerben egyedi kell legyen.

Operátor felüldefiniálásra

A nyelv nem ad rá lehetőséget.

Konverziós operátor: implicit vagy explicit kasztolásra van lehetőség. Az elemei típusok leírásánál szerepelnek az automatikus lehetőségek, azonban a C++ féle típuskényszerítés módja is használható.
Például: int i = (Int) '1'; Beépített konverziós rutinok is segítik ezt a fajta műveletet. Néhány ilyen függvény: str2int, int2str, num2str, str2num, enum2str, str2enum...

Az utód osztályban felülírható az ős osztályból származó tagfüggvény: A felülírást X++ -ban csak virtuálisan felülírt (override) módon lehet megtenni. Bár a nyelvben nem jelöljük külön a virtuális metódusokat, alapértelmezetten minden osztály virtuálisként van definiálva.
Az újradefiniált leszármazott metódusból az ősosztály metódusát a super(); hívással tudjuk elérni.
Virtuális metódus újraimplementálása az override kulcsszóvaltörténik.

Rekurzió

A nyelv támogatja a rekurziót, önnmagát hívó metódusok implementálására van lehetőség.