相关疑难解决方法(0)

基类成员函数内的静态变量

我有以下内容:

   class base
   {
      public
       void f();
       ...
   }
    void base::f()
    {
        static bool indicator=false;
         .....
         if(!indicator)
         {
            ...
            indicator=true;
          }
     }
    class D:public base
    {      
       ...
     }
Run Code Online (Sandbox Code Playgroud)

在我的主()我有:

      main()
      {
          // first instance of D
          base *d1 = new D();
          d1->f();
           ....
           // 2nd instance of D
          base *d2 = new D();
          d2->f();
       }
Run Code Online (Sandbox Code Playgroud)

我发现第一次实例化D并调用d1-> f()时,静态变量设置为false.但第二次我调用d2-> f()代码甚至没有点击"静态bool指示器=假"; 它保持为真(从d1-f()的第一遍开始)这正是我想要的行为,但我不明白为什么会这样.有人可以解释一下发生了什么.提前致谢

c++ inheritance static

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

inheritance ×1

static ×1