• static几点


    静态变量

    函数中使用了static变量,因为static变量的特征,这样的函数被称为:带“内部存储器”功能的的函数

    在函数中是必须要使用static变量的,比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

     
    静态函数(内部函数)

    函数本质上是全局的,默认可以被所有其他函数引用.
    内部函数
    只能在本文件中被引用的函数.定义内部函数时,在函数名和函数类型的前面加static.
    外部函数
    定义函数时,如果在函数首部最左端冠以关键字extern,标识次函数为外部函数,C语言规定,如果在定义函数是省略extern,则隐含为外部函数.
    在调用此函数的文件中,需要用extern声明所用的外部函数.


    静态全局变量

    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
    全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。
    这两者在存储方式上并无不同。   
    这两者的区别虽在于:
    1、非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
    2、静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。
       
    由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。   
    从以上分析可以看出————
    把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期。
    把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。


    静态全局函数是文件作用域的只能在本文件内有效;全局函数可以被同一工程的别的文件使用


    若全局变量仅在单个C文件中访问,则可将此变量改为静态全局变量,以降低模块间的耦合度;
    若全局变量仅由单个函数访问,则可将此变量改为该函数的静态局部变量,以降低模块间的耦合度。

    静态成员函数

    静态成员函数可以直接调用该类的实例中的私有成员。

    可以这样子理解:外部不允许访问私有成员是说类以外代码不允许访问。 因而私有成员可以被类的成员函数(静态成员函数)和其实例的成员函数(非静态成员函数)所访问。

    由于static成员函数的调用不存在this指针的问题,所以不存在重载(overload)与覆盖(override)的问题,对于可以区分的情况下,会直接调用,如果子类存在与基类相同的函数,则基类对象调用的则是基类的静态函数,子类调用的是子类静态函数.子类亦可调用基类静态函数,但需要用base::指定类作用域.

    静态成员是可以用.或者::来调用的
      .   是对象名.静态成员
      ::   是类名::静态成员

    -> 不能使用,因为静态成员是被存放在单独的内存中的,类内非静态成员都隐含有this指针

    子类不能从父类继承的有:
        1. 构造函数
        2. 拷贝构造函数
        3. 析构函数

  • 相关阅读:
    《ucore lab1 exercise2》实验报告
    《ucore lab1 exercise1》实验报告
    《Tsinghua os mooc》第21~22讲 文件系统
    《Tsinghua os mooc》第17~20讲 同步互斥、信号量、管程、死锁
    《Tsinghua os mooc》第15~16讲 处理机调度
    《Tsinghua os mooc》第11~14讲 进程和线程
    《Tsinghua oc mooc》第8~10讲 虚拟内存管理
    bzoj3188 [Coci 2011]Upit(分块)
    P4514 上帝造题的七分钟(二维树状数组)
    bzoj3156 防御准备(斜率优化)
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994778.html
Copyright © 2020-2023  润新知