zoukankan      html  css  js  c++  java
  • static几点

    静态变量

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

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

     
    静态函数(内部函数)

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


    静态全局变量

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


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


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

    静态成员函数

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

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

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

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

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

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

  • 相关阅读:
    新四军的7个师,以及粟裕的山头背景
    基于easyui的webform扩展
    Mac入门(一)基本用法
    HtmlAgilityPack实战代码
    摄像头、麦克风、扬声器测试程序
    依赖注入(IOC)
    类型
    C#私房菜[二][提供编程效率的技巧]
    Fluent Nhibernate code frist简单配置
    Ubuntu环境搭建系列—JavaEE篇
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994778.html
Copyright © 2011-2022 走看看