C/C++程序设计——static关键字

本文详细介绍了static关键字在编程中的应用,包括修饰局部变量时使其具有全局生命周期但限于文件作用域,修饰全局变量或函数以限制其为内部链接,以及在C++中作为静态成员变量和静态成员函数的特点和访问方式。静态成员变量属于类而不属于特定实例,静态成员函数无法访问非静态成员并缺少隐含的this指针。
摘要由CSDN通过智能技术生成

一、修饰局部变量

(1)称为静态局部变量,改变局部变量的生命周期,生命周期由局部变为全局。

(2)作用域不发生改变。

(3)静态局部变量只能被初始化一次。

本质:

        改变了局部变量的存储位置:局部变量是存储在栈区,但如果用static修饰局部变量,则编译器在编译期间就会将其分配到全局数据区。

二、修饰全局变量或函数

作用:

        都是限制其只能在本文件内使用,不能跨文件访问(默认可以跨文件访问)。

本质:

        全局变量和函数有外部链接属性,使用static修饰时,就会改变其链接属性为内部链接属性,让其具有文件作用域,即只能在本文件内使用,不能跨文件访问。

例如:

       ① 在dome2中定义的函数和全局变量,在头文件中声明后,就可以在另一个包含该头文件的文件中,进行跨文件访问:

 

 

         ②在dome2中用static修饰,禁止跨文件访问,则dome中就无法再访问:

注意:

        变量声明要加extern关键字,明确告知编译器这是声明,否则可能会被误认为是定义。函数声明也建议加上此关键字。

三、static成员(C++)

1.概念

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

        静态的成员变量一定要在类外进行初始化(注:在类外定义时不要加static,但要加上类名::)

2.特性

1.静态成员为所有类对象所共享,不属于某个具体的实例;

2.静态成员变量必须在类外定义,定义时不添加static关键字;

3.类静态成员即可用类名::静态成员或者对象.静态成员来访问;

4.静态成员函数没有隐藏的this指针,不能访问任何非静态成员,也不能调用非静态成员函数;

5.静态成员和类的普通成员一样,也有public、protected,private3种访问级别,也可以具有返回值;

6.静态成员变量没有存储在对象中;

7.静态成员函数不能设置为const成员函数(因为这里const本质是在修饰this);

8.静态成员函数不能设置为虚函数。

3.访问方式

(1)对象名.静态成员

(2)类名::静态成员

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hey小孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值