静态数据成员和静态成员函数理解

1、静态数据成员

静态数据成员其特殊点在于它以关键字static开头。静态数据成员我们也可以叫它共享数据,原因在于一旦我们在一个类中定义了一个或多个静态数据成员,即使我们不创建对象也可以引用这些数据成员。如果只声明了类而没有定义对象,类中的一般数据成员是不占内存空间的。需要注意的是:静态数据成员不属于某一个对象,不会占用某一个对象的内存空间。所有的对象,都可以引用这些静态数据成员。

静态数据成员的生命周期从程序运行开始到主程序运行结束,其所占的内存空从编译被分配,直到程序运行结束才释放。

静态数据成员可以被初始化,而且只能在类外进行初始化。例如:

int Person::name = "Person";

注意不能再初始化参数列表里对静态数据成员进行初始化。

Person(string n):name(n){}    //错误,name被定义为静态数据成员

静态数据成员既可以通过对象引用,也可以通过类名来引用。通过类名引用应该加对象名和成员运算符“.”。

2、静态成员函数

成员函数也可以被定义为静态的。一般声明格式:static 数据类型 函数名();

静态成员函数是类的一部分,不是对象的一部分。在类外调用公用静态成员函数,要用类名和域限定符::,静态成员函数是用来处理静态数据成员。

如:Perosn::show();

回顾一般成员函数的调用过程:当调用一个函数的成员函数时,系统会把该对象的起始地址赋给成员函数的this指针,然后执行成员函数。

但是静态成员函数不属于某一个对象,没有this指针,就无法对一个对象中的非静态成员进行默认访问。静态成员函数与非静态成员函数的根本区别在于:非静态成员函数有this指针,而静态成员函数没有this指针。这就决定了静态成员函数不能访问本类中的非静态成员。
静态成员函数可以直接引用本类中的静态数据成员,因为静态数据成员同样属于本类的,可以直接引用。在一个C++程序中,静态成员函数可以访问静态数据成员,但是不可以访问非静态数据成员。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值