2016-07-30 4 views
0

宣言する前にクラスのメンバ変数を使用することは可能ですか? ここに私のコードです。 uはここで見ることができるよう 宣言の前にメンバー変数を使用していますか?

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; 
    } 

は、私はそれを宣言する前に、変数 processor_speedを使用することができました。 私はここで同様の質問を見た: Do class functions/variables have to be declared before being used? しかし、私はこのコードが動作する理由を理解することができませんでした。 ありがとう

+0

質問に明記されていて、彼がそれを理解していないと言っても、重複しているわけではありません。 –

+0

メンバー変数は、クラス内で実行されていないため、メンバー関数で使用した後に宣言できます。関数が呼び出される前にクラスがリストされていれば、それは機能します。 –

答えて

1

はい、できます。

メンバ変数は、最初の使用の後にテキストであっても、クラスのメンバ関数の有効範囲にあります。コンパイラはコードをいくつかの "パス"で翻訳します。すべてのメンバ変数を最初に取得し、すべての宣言を含むメンバ関数を翻訳することだけを考えることができます。

翻訳単位内の "自立型"グローバル変数と静的変数には使用できません。最初の宣言より先に宣言する必要があります。それ以外の場合はエラーが発生します。

関連する問題