Aracılığıyla paylaş


Ad (C++)

C++ dili tek bir genel ad sağlar.Bu genel adı çatışmayı sorunlara neden olabilir.Örneğin, bu iki C++ üstbilgi dosyaları göz önünde bulundurun:

char func(char);
class String { ... };

// somelib.h
class String { ... };

Bu tanımları ile hem üstbilgi dosyaları tek bir programda kullanmak olanaksızdır; String sınıfları clash.

Bir ad alanı içinde bildirildiði tüm adlara ek tanımlayıcı ekler Bildirime dayanan bir bölgedir.Ek tanımlayıcı daha az olası bir ad programda başka bir yerde bildirilen adlarla çakışacak yapar.Adları aynı çeviri birimi cinsinden görünür olsa bile ayrı bir ad çakışma olmadan aynı adı kullanmak mümkündür.Ayrı bir ad göründükleri sürece, ad tanımlayıcısını eklenmesi nedeniyle her adın benzersiz olacaktır.Örne?in:

namespace one {
   char func(char);
   class String { ... };
}

// somelib.h
namespace SomeLib {
   class String { ... };
}

Bunlar olur çünkü sınıf adları clash değil artık one::String ve SomeLib::String, sırasıyla.

C++ Bileşik adlar için ad alanları izin vermez.

// pluslang_namespace.cpp
// compile with: /c
// OK
namespace a {
   namespace b {
      int i;
   }
}

// not allowed
namespace c::d {   // C2653
   int i;
}

Tüm ad alanları dışında bir çeviri biriminin bildirimleri dosya kapsamı içinde hala genel ad üyeleridir.

Hangi konu hakkında daha fazla bilgi edinmek istiyorsunuz?

Ayrıca bkz.

Başvuru

Bildirimleri