• c/c++静态函数和静态成员函数


    c语言中static的语义

    1.static变量:

      1).静态局部变量

        a.静态局部变量在函数内定义,生存期为整个源程序,但作用域与局部变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。

        b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。

      2).静态全局变量

        全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。但是他们的作用域,非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。

    2.static函数(也叫内部函数):

      只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。

    3. 在C语言中,由于没有类的概念,所以没有静态成员一说,在c中static的作用主要有2个:

        一是隐藏功能,对于static修饰的函数和全局变量而言,其作用于局限于所在的文本,不能被其他文本内的函数使用
        二是保持持久性功能,对于static修饰的局部变量而言,其存储区变更到静态存储区,程序结束不销毁
        并且,因为存放在静态区,全局和局部的static修饰的变量,都默认初始化为0。

    c++语言中static的语义

      在c++中,由于面向对象的思维,它与C语言中的作用有一些不同,有了类中静态成员的说法。静态成员不属于对象,而属于类。不创建对象也可调用。从代码形式上来说没有任何区别。普通类成员函数与静态成员函数的区别在于普通成员函数有一个隐藏的调用参数(this)指针。所以就是说静态成员函数没有对象也可调用。

      对类的静态和非静态函数的不同的调用要求决定了它们在使用上的方便程度:

        非静态成员函数要通过对象调用,所以要求首先建立一个对象;

        而静态成员函数可不建立对象就可以被使用。

        另外,如果类的成员函数想作为回调函数来使用,一般情况下只能将它定义为静态成员才行。

  • 相关阅读:
    VMware虚拟机网络桥接模式下无法与主机ping通解决办法
    (一)编写Bootloader程序应该注意的一些问题
    使用TrueSTUDIO和MDK编译器生成.bin文件
    Linux开发板通过串口与电脑上位机通信
    STM32知识点
    仿真器SWD可不接复位引脚的原因
    ARM内核常用缩写含义
    三大范式(转)
    修改主键示例
    ROW_NUMBER用法详解
  • 原文地址:https://www.cnblogs.com/yulei0713/p/11327169.html
Copyright © 2020-2023  润新知