2016-07-30 5 views
0

ist es möglich, eine Membervariable einer Klasse vor der Deklaration zu verwenden? Hier ist mein Code.Verwenden Sie eine Elementvariable vor der Deklaration?

using namespace std; 
class Computer 

    { 
     public: 
      Computer() 
      { 
       processor_speed = 0; 
      } 
      ~Computer(); 
      void setspeed (int); 
      int getspeed (void); 

     private: 
      int processor_speed; 
    }; 
    /*Computer::Computer() 
    { 
     processor_speed = 0; 
    } */ 
    Computer::~Computer() 
    { 
     cout<<"this is a destructor"<<endl; 
    } 
    void Computer:: setspeed(int p) 
    { 
     processor_speed = p; 
    } 
    int Computer::getspeed(void) 
    { 
     return processor_speed; 
    } 

    int main(void) 
    { 
     Computer obj; 
     cout<<"processor speed is "<<obj.getspeed()<<endl; 
     obj.setspeed(100); 
     cout<<"processor speed is now "<<obj.getspeed()<<endl; 
     return 0; 
    } 

wie sich hier sehen konnte ich vor Variable processor_speed verwenden, um es zu erklären. Ich sah eine ähnliche Frage hier: Do class functions/variables have to be declared before being used? aber ich war nicht in der Lage zu verstehen, warum dieser Code funktioniert. Danke

+0

Dies ist kein Duplikat, wenn er es speziell in der Frage aufführt und sagt, dass er es nicht versteht. –

+0

Sie können Elementvariablen deklarieren, nachdem Sie sie in einer Elementfunktion verwendet haben, da die Funktion nicht innerhalb der Klasse ausgeführt wird. Wenn die Klasse aufgelistet wird, bevor die Funktion aufgerufen wird, funktioniert sie. –

Antwort

1

Ja, Sie können es tun.

Eine Membervariable ist im Gültigkeitsbereich für Memberfunktionen Ihrer Klasse, auch wenn sie textlich nach ihrem ersten Verwendungsort liegt. Der Compiler übersetzt Ihren Code in mehrere "Pässe". Man könnte daran denken, alle Elementvariablen zuerst zu bekommen und erst dann die Elementfunktionen mit allen Deklarationen zu übersetzen.

Beachten Sie, dass dies nicht für "freistehende" globale und statische Variablen in Übersetzungseinheiten zulässig ist: Eine Deklaration muss der ersten Verwendung vorausgehen, sonst erhalten Sie einen Fehler.

Verwandte Themen