static的使用、namespace和类模板

1. 静态局部变量
定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的

当 static 修饰局部变量时:

 ● 变量的存储区域由栈变为静态常量区。
 ● 变量的生命周期由局部变为全局。
 ● 变量的作用域不变。

函数调用开辟栈帧,函数中的局部变量在栈上分配存储空间,当函数执行完毕,函数栈帧销毁,栈空间由系统回收。而静态局部变量自从初始化后会保留下来,知道下一次运行改程序。

2. 静态全局变量

在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。

当 static 修饰全局变量时:

● 变量的存储区域在全局数据区的静态常量区。

● 变量的作用域由整个程序变为当前文件。(extern声明也不行)

● 变量的生命周期不变。

一个全局变量被 static 修饰,使全局变量只能在定义变量的当前文件使用,不能在其余文件使用,即使 extern外部声明也不行。

3. static 修饰函数

函数的作用域与全局变量一样都是整个程序。

当 static 修饰函数时:

● 函数的作用域由整个程序变为当前文件。(extern声明也不行)

一个函数被 static 修饰,使函数只能在定义的源文件使用,不能在其余文件使用,即使 extern外部声明也不行。(同static 修饰全局变量)

 

4.类的static

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的 成员函数,称之为静态成员函数。

有以下特性:

1.静态成员函数和静态成员数据的存储区域和某个类的存储区域不在一处,它们单独存储于某个存储空间。

2.静态成员函数没有this,可以通过对象调用,也可以通过class调用,它属于该类所有的对象。

3.在类外要完成静态存储数据的初始化。

 

5.类模板

例如

template<class T>

const T& min(const T& a,const T & b)

{

return b<>a?b:a;

}

6.namespace 

可以在代码头加一句using namespace std全部解开

也可以使用using namespace::cout 解开一个

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值