C kezdőknek

C ++ kezdők

2.7. névterekkel

Tegyük fel, hogy szeretnénk adni, hogy a közös használatát osztályunk Array, kialakult az előző példákban. Azonban nem mi vagyunk az egyetlenek, akik részt vesznek ezt a problémát; talán valaki valahol, mondjuk, az egyik a divíziók a vállalat az Intel hozta létre a névadó osztályban. Tekintettel arra, hogy a nevek ezen osztályok azonos, a potenciális felhasználók nem használhatják mindkét osztályban egyidejűleg, meg kell választani közülük. Ezt a problémát oldja oly módon, hogy az osztály neve, egy sor azonosítja a fejlesztők azt mondják,

Névtér kulcsszó határozza meg a névteret, amely meghatározza a láthatóságát az osztály és a hívott ebben az esetben Cplusplus_Primer_3E. Tegyük fel, hogy osztályokat más fejlesztők elhelyezett különböző névtérben:

Alapértelmezésben a program látható tárgyak, amelyek deklarált nélkül explicit névtér jelzést; azok a globális névteret. Ahhoz, hogy a tárgy a másik helyet, akkor kell használni, minősített neve, amely egy névtér azonosítót és az objektum azonosító elválasztva hatálya felbontás operátor (: :). Itt vannak a hivatkozás a tárgyak a fenti példák:

Meg lehet rendelni álneveket névtér a könnyebb használat érdekében. Alias ​​van kiválasztva, rövid és könnyen megjegyezhető. Például:

Más nevek használják, és annak érdekében, hogy elrejtse a használatát névterek. Cseréje egy alias, meg tudjuk változtatni a beállított funkciók és osztályok részt, és a többi program kód ugyanaz marad. Korrekciós csak egy sor a fenti példában, megkapjuk a meghatározását egy teljesen más tömböt:

Persze ahhoz, hogy ez lehetséges, akkor szükség van egy pontos egyezés interfészeket osztályok és függvények bejelentett ezen névtartományokat. Képzeljük el, hogy a Array osztályt Disney_Feature_Animation nincs konstruktor egyetlen paraméter - a méret. Ezután a következő kódot hibát okoznak:

Még kényelmesebb a módja, hogy egy egyszerű, képzetlen neve utal a tárgyak meghatározott névtér. Erre a célra a értelmében:
#include "IBM_Canada_Laboratory.h"

Tér IBM_Canada_Laboratory neve látható a programban. Nem lehet, hogy látható az összes helyet, és az egyes nevek belül (szelektív irányelv):

Mint már említettük, az összes összetevője a C ++ standard könyvtár nyilvánítják a névtér std. Ezért az egyszerű felvétel egy header fájl nem elég ahhoz, hogy közvetlenül a szabványos függvények és osztályok:

Ki kell használni a segítségével értelmében:

Megjegyzendő azonban, hogy ily módon visszatérünk a problémát a „dugulás” a globális névtér, és az oldatot a mechanizmus nevű tereket hoztak létre. Ezért jobb, hogy egy minősített név:

Gyakorlat 2.21

Mivel névtér

és a szöveg a program:

Kapcsolódó cikkek