c++ - 在声明之前使用成员变量?

标签 c++

<分区>

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

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? 但我无法理解这段代码工作的原因。 谢谢

最佳答案

是的,你可以做到。

一个成员变量在你的类的成员函数的范围内,即使它是在它的第一次使用点之后的文本。编译器分几次“通过”翻译您的代码。可以将其视为首先获取所有成员变量,然后才翻译成员函数,所有声明都已到位。

请注意,对于翻译单元内的“独立”全局变量和静态变量,这是不允许的:声明必须在第一次使用之前,否则会出错。

关于c++ - 在声明之前使用成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38675247/

相关文章:

c++ - 如何转发声明 vector<B*>*(不是 vector<B> 或 vector<B*>)?

c++ - 确定旋转对象的位置

c++ - 更多关于中介者模式和 OO 设计

c++ - 使用 copyTo 函数断言失败 (C++)

c++ - PEM 转换 (PKCS7) 到 DER - 又名 Base64 C++ 问题

c++ - LoopPass 可加载模块的 undefined symbol

c++ - 静态链接的 xerces 3.0.0 在 Linux 上动态工作时不起作用

c++ - volatile 成员变量与 volatile 对象?

c++ - 将 QString 转换为 char* 以用于第 3 方库的内存清理问题,如何解决?

c++ - 是否有其他类型的 void_t 的标准概括?