Sobes.tech
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õrreldes static-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();
}