Bedutung von using namespace



  • Hallo,

    ich versuche mir selbst programmieren beizubringen und habe ein Programm entdeckt welches die Benutzung von new und delete demonstriert.

    #include <list> 
    #include <iostream> 
    using namespace std; 
    
    class Kugel {
    
       private:															
       int id;																
       static int gid;													
    
    public: 
    	Kugel():id(++gid){}												
       ~Kugel() { cout << "Kugel " << id << " wird geloescht" << endl; }
       int getID() { return id; }										
    
       }; 
    
    int Kugel::gid = 0;														
    
    int main() { 
    							// 4 Kugeln auf dem Heap anlegen 
       Kugel* k = new Kugel; 
       Kugel* k2 = new Kugel; 
       Kugel* k3 = new Kugel; 
       Kugel* k4 = new Kugel; 
       std::list<Kugel*> l; 
       l.push_back(k);			// Jetzt speichern wir Zeiger in der List 
       l.push_back(k2);			// d.h, es wird der Zeiger 
                                    //kopiert und NICHT das ganze 
       l.push_back(k3);			// Objekt 
    
       for(std::list<Kugel*>::iterator it = l.begin();  it!=l.end(); ++it) 
          cout << "Kugel " << (*it)->getID() << endl; 
    
       it = l.begin(); 
       ++it; 
       delete *it;   // Kugel 2 vom Heap löschen 
       l.erase(it);  // Zeiger auf den nicht mehr gültigen Block entfernen 
    
       for(it = l.begin();  it!=l.end(); ++it) 
          cout << "Kugel " << (*it)->getID() << endl; 
    
       // Kugel 4 löschen weil ich Bock drauf hab: 
       delete k4;  // Hier wird auch der Dtor aufgerufen 
    
       cin.get(); 
       return 0; 
    }
    

    Ich habe das so verstanden:
    Jemand hat eine Klsasse List geschrieben, die mit Tempates arbeitet.
    Nun möchte ich die Klasse benutzen und füge sie mit "#include <list>" ein.

    Wozu ist aber dieses "using namespace std;" gut?
    Warum muss ich vor dem gebrach der klasse auch dieses std schreiben "std::list<Kugel*> l;"
    Und woran erkenne ich, dass und wann ich dieses "using namespace" anwenden muss.




Anmelden zum Antworten