Apa itu "namespace alias" di C ++? Bagaimana ini digunakan?
c++
namespaces
Martin B
sumber
sumber
Sederhananya, #define tidak akan berfungsi.
Kompilasi baik-baik saja. Memungkinkan Anda bekerja di sekitar tabrakan namespace / nama kelas.
Pada baris terakhir, "Hmm: Ups" adalah kesalahan kompilasi. Pra-prosesor mengubahnya menjadi Tidak :: Ups, tetapi Tidak sudah merupakan nama kelas.
sumber
Lebih lanjut tentang topik ini http://channel9.msdn.com/Series/C9-Lectures-Stephan-T-Lavavej-Core-C-/Stephan-T-Lavavej-Core-C-1-of-n
Ini semua tentang memilih alias untuk nama namespace looong, seperti:
namespace SHORT = NamespaceFirst::NameSpaceNested::Meow
Lalu nanti, Anda bisa mengetik
typedef SHORT::mytype
dari pada
typedef NamespaceFirst::NameSpaceNested::Meow::mytype
Sintaks ini hanya berfungsi untuk ruang nama, tidak bisa menyertakan kelas, tipe setelah
namespace NAME =
sumber
Juga perhatikan bahwa alias namespace dan menggunakan arahan diselesaikan pada waktu kompilasi, bukan waktu berjalan. (Lebih khusus, mereka berdua alat yang digunakan untuk memberitahu kompilator ke mana lagi harus mencari ketika menyelesaikan nama, jika tidak dapat menemukan simbol tertentu dalam lingkup saat ini atau salah satu dari lingkup induknya.) Misalnya, tidak satu pun dari ini akan menyusun:
Sekarang, pikiran yang ingin tahu mungkin telah memperhatikan bahwa
constexpr
variabel juga digunakan pada waktu kompilasi, dan bertanya-tanya apakah mereka dapat digunakan bersama dengan alias atau arahan. Setahu saya, mereka tidak bisa, meskipun saya mungkin salah tentang ini. Jika Anda perlu bekerja dengan variabel bernama identik dalam ruang nama yang berbeda, dan memilih di antara mereka secara dinamis, Anda harus menggunakan referensi atau petunjuk.Kegunaan di atas mungkin terbatas, tetapi harus melayani tujuan.
(Permintaan maaf saya untuk kesalahan ketik yang mungkin saya lewatkan di atas.)
sumber
Namespace digunakan untuk mencegah konflik nama.
Sebagai contoh:
Anda sekarang memiliki dua bilah nama kelas, yang sama sekali berbeda dan terpisah berkat namespace.
"Using namespace" yang Anda tampilkan adalah agar Anda tidak harus menentukan namespace untuk menggunakan kelas di dalam namespace itu. yaitu std :: string menjadi string.
sumber saya: https://www.quora.com/What-is-namespace-in-C++-1
sumber