zoukankan      html  css  js  c++  java
  • C++中static用法

    static用法分为两种情况,兼容于C语言的面向过程用法,和C++语言用于类的面向对象用法。

    1.面向过程

         static变量存储在静态/全局区。因此生存期是整个程序,相当于全局变量。 所以默认会进行初始化。

     静态局部变量: 静态局部变量的作用域是该函数,引入static变量是在进入该函数时,变量进行一次初始化后,不会再进行初始化,不会覆盖之前修改过的数据。改变了变量的生存期。

     静态全局变量:  静态全局变量的作用域是该文件。 

            静态全局变量与全局变量的区别是,static将该变量作用域限制在了该文件。 全局变量的作用域是整个工作区。

            同理,也可以利用static将(全局)函数的作用域限制在该文件中,而不是整个工作区。函数默认是全局的。

    2.面向对象

    1)static成员变量:   属于类,所有对象共同所有,没有this指针。一个对象修改其值,其他对象再访问,为修改后的值。

                              需要在类外进行初始化,而且不用加static 修饰。所以,类外相当于是定义,而类内相当于是 声明该变量属于这个类。

                            static成员变量 可以认为是 在该类范围下的全局变量。所以类继承之后,父子类也是公用同一个变量。(全局)

    2)static成员函数:同上,属于类,所有对象可使用。实现时不用加static.

                       相当于全局函数,所以 static成员不能访问类的private/public成员,因为不知道是哪个对象的,只能访问静态成员(相当于全局)。或者显式说明要访问哪个对象的成员。

                      可以被继承、覆盖,但不能为虚函数virtual.

    路是一步一步走的
  • 相关阅读:
    Entity Framework 博客园专题
    部分视图调用方法总结(Action 、 RenderAction 、 Partial 、 RenderPartial)
    vs2010下安装asp.net MVC3顺序
    _viewstart.cshtml的作用
    c# yyyyMMdd,dd/MM/yyyy 类型字符串转换为datetime 类型
    c# datetime用法总结
    SQL中的每一张表都必须设有主键吗
    数据库到底用不用外键
    mysql 数据库数据迁移 The user specified as a definer ('root'@'%') does not exist 解决方法
    项目--解决MySQL数据库插入中文乱码
  • 原文地址:https://www.cnblogs.com/Lalafengchui/p/4496428.html
Copyright © 2011-2022 走看看