2016-07-30 66 views
0

是否可以在声明它之前使用类的成员变量? 这是我的代码。在声明之前使用成员变量?

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

这不是一个重复,如果他特别列在问题中,并说他不明白。 – 2016-07-30 15:40:55

+0

由于函数未在类中运行,因此可以在成员函数中使用它们之后声明成员变量。如果在调用函数之前列出类,它将起作用。 – 2016-07-30 15:44:32

回答

1

是的,你可以做到。

成员变量在您类的成员函数的作用域中,即使它在文本上位于第一个使用点之后。编译器在几个“通行证”中翻译你的代码。人们可以将其视为首先获取所有成员变量,然后才转换成员函数,并且所有声明都已到位。

请注意,这不适用于翻译单元内的“独立式”全局和静态变量:声明必须先于第一次使用,否则会出现错误。