static成员变量 & static成员函数

一、static成员变量

1.静态成员变量的定义,与静态类型变量的定义方式一样,要在成员变量之前加关键字static。

2.不同于未初始化的静态全局变量会被赋予默认值,静态成员变量必须手动初始化,并且,由于它存储在内存的静态存储区,故而在C++语法中静态成员变量只能在类体外初始化。此时,前面不需要加关键字static。

3. 静态成员变量属于类而不是对象,因而它不含有隐含的*this指针参数。静态成员变量在类定义时就被分配存储单元,被所有对象共享,它的初始化必须在对象构造之前。

4.  静态成员变量可看成加了访问权限控制的全局变量。它的初始化方式都一样,只是公有、私有和受保护的静态成员访问权限不同而已。公有静态成员,既可以通过类的对象进行访问,也可以通过类名直接访问;私有的和保护的静态成员变量则只能被该类的公有成员函数和友元函数访问。

5. 父类的static变量和函数在派生类中依然可用,但是受访问性控制。对static变量来说,派生类和父类中的static变量是共用空间的,这点在进行引用计数的时候要特别注意。

二、static成员函数

1. 静态成员函数的定义与非静态成员函数的定义的区别在于要在成员变量之前加关键字static。

2. const修饰的成员函数本质上是一个加上了访问控制的全局函数。它属于类本身,可被所有的对象访问。由于函数不隐含this指针参数,因而函数不能访问非静态成员,只能访问类的静态的成员、全局变量、外部函数和变量等。

3. 静态成员函数若想访问类的非静态成员需要借助实例化的对象或指针。

4. 静态成员函数首先是一个成员函数,它可以定义为内联函数,也可以在类体外定义,但此时函数名前不必加关键字static。

5. const修饰符用于表示函数不能修改成员变量的值,该函数必须是含有this指针的类成员函数,函数调用方式为thiscall,而static成员函数本质上是全局函数,调用规约是__cdecl或__stdcall。因而不能用const来修饰static成员函数。

6. static成员函数是没有“虚函数”一说的。因为全局函数不存在虚函数。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值