Neden isimsiz ad kullanılır ve faydaları nelerdir?
Ben sadece yeni bir yazılım projesine katıldı ve tasarımı anlamaya çalışıyorum. Proje adı açıklanmayan bir ad sık kullanır. Örneğin, bu gibi bir sınıf tanımı dosyası oluşabilir:
// newusertype.cc
namespace {
const int SIZE_OF_ARRAY_X;
const int SIZE_OF_ARRAY_Y;
bool getState(userType*,otherUserType*);
}
newusertype::newusertype(...) {...
Ne bir isimsiz bir ad alanı kullanmak için neden olabilecek tasarım konuları? Ne avantajları ve dezavantajları nelerdir?
CEVAP
(Şu, bu
İsimsiz ad tanımlayıcı yapmak için bir yarar vardır
namespace unique { /* empty */ }
using namespace unique;
namespace unique { /* namespace body. stuff in here */ }
Ekstra adım, boş vücut kullanarak zaten kullanma yönergesi çoktan geçtiği için bu ad alanında tanımlanan ::name
gibi tanımlayıcı ad bünyesinde bakabilmeniz önemlidir.
Bu birden fazla çeviri birimleri bulunabilir ücretsiz işlevleri olarak (örneğin) help
anlamına gelir, ve bağlantı zaman çatışma, vermiyorlarstatic
anahtar tanımlayıcıları bildiriminde koyabilirsiniz C kullanılan kullanarak hemen hemen aynıdır.static
Bu şekilde kullanılan C , beri önerilmiyor
namespace { int a1; }
static int a2;
Her iki a
'çeviri birim yerel ve bağlantı zaman çatışma olmaz. Ama fark isimsiz ad a1
template<int * ptr> struct sample { };
// OK - a1 has external linkage
sample<&a1> s1;
// NOT OK - translation unit locality is done by giving a2 internal linkage.
sample<&a2> s2;
Şablon parametreleri dış bağlantı var bu durumda tanımlayıcı anonim bir ad koymak olmalı.
Comeau-bilgisayar `Why is an unnamed namespace used instead of static? mükemmel bir makale okudum.
ExpandoObject gerçek faydaları nelerdi...
Neden ünlem işareti Ruby yöntemler kul...
Neden Python'doğrudan kabuk komut...
OAuth 2.0: sosyal haklar ve davalar — ...
Href="#&; ve neden kullanılır?"...