Junior
Mis on kasu C++-s nimetamata nimede ruumi kasutamisel?
sobes.tech AI
Vastus AI-lt
Võõrühma nimeta ruum pakub võimalust piirata nimede (muutujate, funktsioonide, klasside) nähtavust praeguses tõlkeüksuses (failis .cpp). See on ekvivalentne kasutamisega võtmesõna static globaalsel tasemel C keeles ning takistab nimede konflikte sidumisel.
Peamised eelised:
- Nimede konfliktide ennetamine: Nimede, mis on deklareeritud võõrruumi nimeta, ei nähta teiste tõlkeüksuste poolt, mis väldib nimede kokkupõrkeid.
- Kohalik nähtavus: Annab selge märku, et konkreetne element on mõeldud ainult selle faili sisekasutuseks.
- Alternatiiv
static: C++-is on võõrruumi nimetus eelistatud viis sisemise koostamise tagamiseks võrreldesstatic-iga globaalsete muutujate ja funktsioonide puhul. - Paranenud koodistruktuur: Muudab arendaja kavatsuse selgemaks – et teatud üksused on faili jaoks privaatsed.
Näide:
// file1.cpp
namespace
{
int internal_counter = 0; // Nähtav ainult file1.cpp
void internal_increment() // Nähtav ainult file1.cpp
{
internal_counter++;
}
}
void public_function()
{
internal_increment(); // Võib kutsuda välja file1.cpp-s asuva public_function
}
// file2.cpp (teine fail)
// Otse ei saa viidata internal_counter või internal_increment
// Kompileerimisel viga: 'internal_counter' ei ole deklareeritud selles ulatuses
// Kompileerimisel viga: 'internal_increment' ei ole deklareeritud selles ulatuses
// int value = internal_counter;
// internal_increment();
// Kuid saab kutsuda public_function, kui see on deklareeritud päisefailis ja kättesaadav
extern void public_function();
void another_function()
{
public_function();
}