函数前面加上static 有什么作用呢?在一般函数前面加上static  和类中的成员函数中加上static 管什么用?

解决方案 »

  1.   

    http://www.sjtvu.com/WEBPAGE/c++/C5_2.ppt
      

  2.   

    在类成员函数中加上Static关键字代表这个成员函数是属于类的,而非对象的,也就是所有该类的对象共同拥有这一个成员函数,而不是普通的每个对象各自拥有一个成员函数
      

  3.   

    补充一下:加了static的成员变量,它是一个类属性,可以在对象还没有创建的时候
    就可以对他初始化,他是有该类的所有对象公共来维护,不是属于每一个对象的
    他的内存分配在heap中的,而非在stack中的
      

  4.   

    一般静态函数只能在当前c/cpp中被调用,作用域是当前源文件。类似于dll中没有export的。
    静态成员函数正如linux2001所言。
      

  5.   

    a.h
    class A
    {
    public:
     static void test()
    };a.cpp
    #include "a.h"
    static void A::test()
    {
     printf("test\n");
    }b.cpp
    #include "a.h"
    void main()
    {
     A::test(); //没有建立一个A对象,但是可以调用A类的静态成员。
    }
      

  6.   

    static修饰的作用定义被修饰的对象的作用域和可见性:作用域是全举的而可见性是局部的。
      

  7.   

    to : ndy_w(carpe diem) error C2724: 'test' : 'static' should not be used on member functions defined at file scope
      

  8.   

    在类中用STATIC定义一个静态函数后,这个函数就直接从属于这个类,即使不建立对象也存在.当在函数内部定义了一个静态变量时,这个变量相当于全局变量,不把这个全局变量定义在函数体外的原因在于C++的封装性以及这样容易产生副作用;对于静态函数也是这个道理!
      

  9.   

    不好意思,在a.cpp中不该写static
      

  10.   

    一般成员函数的参数表中隐含了一个this指针,如 pObj->memberFxn(...);的实际调用是这样的:
    memberFxn(pObj,...),所以在它内部使用的是调用对象的数据.
    静态成员函数没有隐含的this指针,基调用方式跟一般的全局函数是一样的.所以,它无法隐式地取某个对象的成员数据,因此,在它内部只能出现类的静态成员变量.采用静态成员函数的理由很简单:有些时候我们没有必要非要针对该类的某个对象进行操作.例如static CWnd::FromHandle(HWND hWnd),函数所要知道的仅一个hWnd即可,再给它一个this毫无意义,所以就用static