gpt4 book ai didi

c++ - c++ 局部类中的静态成员变量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:56 25 4
gpt4 key购买 nike

我知道我们不能在本地类中声明一个 static 成员变量...但原因尚不清楚。

请问有人能解释一下吗?

另外,为什么我们不能直接在本地类成员函数中访问函数内部定义的非static变量,其中已经定义了本地类?

在下面给出的代码中:

int main(int argc, char *argv[])
{
static size_t staticValue = 0;

class Local
{
int d_argc; // non-static data members OK
public:
enum // enums OK
{
value = 5
};
Local(int argc) // constructors and member functions OK
: // in-class implementation required
d_argc(argc)
{
// global data: accessible
cout << "Local constructor\n";
// static function variables: accessible
staticValue += 5;
}
static void hello() // static member functions: OK
{
cout << "hello world\n";
}
};
Local::hello(); // call Local static member
Local loc(argc); // define object of a local class.
return 0;
}

静态变量 staticValue 可以直接访问,而另一方面 mainargc 参数不是....

最佳答案

  1. 局部类的静态变量/函数:尝试想象语法、生命周期定义和名称重整实现。我会很快放弃 :)
  2. 无法从本地类访问本地变量:因为类实例可能比函数作用域还长。例子:
    class interface; // base class declared somewhere

    // creates specific implementations
    interface* factory( int arg ) // arg is a local variable
    {
    struct impl0: interface { /* ... */ }; // local class
    struct impl1: interface { /* ... */ }; // local class
    // ...

    switch ( arg )
    {
    case 0: return new impl0;
    case 1: return new impl1;
    // ...
    }

    return 0;
    }
    本地声明的类实例现在将存在于函数局部变量的生命周期之外。

关于c++ - c++ 局部类中的静态成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com