none
将有些函数定义为 static 函数, 对系统有何好处(优点) 呢? RRS feed

  • 问题

  •  

    static 函数 的特点我也知道,什么生命期呀,  作用范围呀....


    将有些函数定义为 static 函数, 对系统有何好处(优点) 呢?

    2009年1月5日 9:46

答案

  • 即使没有创建类的实例,也可以调用类中的静态方法。始终通过类名而不是实例名称访问静态方法。无论对一个类创建多少个实例,它的静态方法都只有一个副本。可以节省内存,因为它是所有对象所公有的,因此, 对多个对象来说,静态数据成员只存储一处,供所有对象共用
    2009年1月5日 9:52
    版主
  •  

    在C语言中,函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。

     

    定义静态函数的好处:

    <1> 其他文件中可以定义相同名字的函数,不会发生冲突

    <2> 静态函数不能被其他文件所用。
     

    2009年1月12日 9:08

全部回复

  • 即使没有创建类的实例,也可以调用类中的静态方法。始终通过类名而不是实例名称访问静态方法。无论对一个类创建多少个实例,它的静态方法都只有一个副本。可以节省内存,因为它是所有对象所公有的,因此, 对多个对象来说,静态数据成员只存储一处,供所有对象共用
    2009年1月5日 9:52
    版主
  • 谢谢.

     

    在C语言中(面象过程的语言)将有些函数定义为 static 函数, 对系统有何好处(优点) 呢?

    2009年1月5日 9:57
  • 简单地说Static变量的生命周期和进程的生命周期一样长,那么所有函数可以在进程生命周期中通过static变量共享数据。你可以把static变量理解成为进程中的记事本。可以记录在进程中运行时一些需要持续化的数据。

    在面向对象语言中,static成员变量可以理解成一个带作用域的全局变量。从而获得一个类共享数据的功能。

    2009年1月5日 10:03
    版主
  • 说实话,除了迫不得已不要用static来定义函数,特别是多线程的时候。

     

    用static在Windows里面我主要是用在几个方面。

    1:在类中需要建立线程。由于线程的函数必须是全局的,但为了类的封装性,把一个函数写到类外比较难看,就把他声明成静态的。不过用friend 也可以。

    2:还有在类里面声明的静态函数可以不用定义类的实例而直接调用。比如

    class AAA

    {

    public:

    static void HelloWorld();

    }

     

    可以直接这样调用HelloWorld()  :  AAA::HelloWorld();

    全局函数和static基本上是一样的,其实static函数在C++的作用就是把一个类中的函数变成全局的

    2009年1月5日 11:18
    版主
  • 静态函数在类厂模式里还是很有用的
    2009年1月5日 16:54
    版主
  • 看错题目了。。。。是静态函数,请忽略我的回复。

    2009年1月6日 1:28
    版主
  •  

    在C语言中,函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。

     

    定义静态函数的好处:

    <1> 其他文件中可以定义相同名字的函数,不会发生冲突

    <2> 静态函数不能被其他文件所用。
     

    2009年1月12日 9:08