28. 静态对象

C语言:
全局变量、本地变量
static: 持久存储(在哪里)
访问受局限(谁能看到你)

static本地变量就是全局变量

全局变量static: 只在这个.c文件里有效
本地变量static: 这个本地变量具有持久存储, 无论是否离开,本地变量都是保存着这个值的.(其实static本地变量就是全局变量)
函数static: 这个函数只能在.c文件里被访问,.c以外是无法访问的.
这里写图片描述

说明:(1). File1: global是一个全局变量,
在File2: 可以直接用extern来使用g_global
(2). File1: static int s_local, 表明s_local只能在File1文件
中使用, 就算在File2中使用static, 也只能骗过编译器,
但骗不过linker.
为何骗不过linker: s_local只能在File1中使用, File2中
extern int s_local要使用File1中的s_local, 两者相矛
盾,所以链接失败.
(3). static void hidden() 只能在File1文件中使用, 不能在File2文件中使用.

C++语言
static本地变量就是全局变量, 只能在此文件中使用.
成员变量 成员函数
static global variables: static全局变量(过时)
static local variables: static本地变量(持久存储)
static member variables: static成员变量(在所有对象之间共享)
static member function: staitc成员函数(函数共享,只能访问 静态的变量或函数 )

if(static是类)
  class X
  {
     X(int,int);
     ~X();
  };
  void f()
  {
    static X my_X(10,20);//存储是全局,第一次进函数初始化.
    //vptr
    ......
  }
  //关心2件事:(1).在哪里---全部数据区,链接的时候分配好了  (2).什么时候被构造出来
  全局变量的构造,程序一运行的时候,main函数之前, 被构造.
void f(int x)
{
   if(x>10)
   {
     static X my_X(x, x*21);//只在f()函数范围内,x>10条件下才会被调用 构造
     ......
   }
}
#include "X.h"
X global_x(12,34);
X global_x2(8,16);
// 全局变量, 存储全局数据区,何时被构造?
// 全局变量的构造,程序一运行的时候,main函数之前, 被构造.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值