请问MFC什么时候需要定义static变量呢?MFC的static变量和C#的static变量一样吗?都是当程序消亡的时候才消亡吗?谢谢了先

解决方案 »

  1.   

    局部变量的周期跟所在的函数有关,定义成static就和程序的生命周期一样了,而且独立于类中的成员存在。static变量只在所在函数被调用的第一次初始化。
      

  2.   

    变量根据需要定义,需要的部分保留值的变量可为STATIC
      

  3.   

    static 的类成员是所有该类对象共享的, 也就是说每个对象从初始化之后,改变这个变量的值,其他对象对应的值都会发生改变
      

  4.   

    static类型的成员变量属于这个类,而不是属于这个类的某一个对象
      

  5.   

    多了:比如系统的 DECLARE_DYNCREATE(CMnuView)就是例子
          
      

  6.   

    补充:static int y;
    main()
    {
       static int x;
    }static变量在执行main()之前分配地址,无论这个Static变量在哪里定义.
    static在退出main()之后才释放
      

  7.   

    一般的要全局使用的就用全局变量行了,需要保留变化的才考虑用静态变量。
    有时静态变量用不好会影响程序的运行,特别是在DLL中。所以我现在都建议
    使用全局变量来代替STATIC的
      

  8.   

    昨天下午才给静态变量搞的鼻青脸肿。在一个dshow Filter中定义了一个静态变量,但这个Filter在程序中被多个Graph调用,这样这个静态变量在各个Graph中共享,这不是程序逻辑期望的,结果造成结果错误。后来把静态变量修改成成员变量,在构造函数内初始化,这样各个Graph的数据都是局部的,就不会相互干扰了。然后程序正常了。