C++——静态成员


    学习了一些累得基础知识,知道了,在类的作用域外要通过类去实例化对象,然后访问里面的成员。

思考一下,如何去实现一个统计类对象个数的程序设计呢,最笨的办法我们可以在类里加一个方法,进行自加,然后初始化对象后就调用这个方法。这个可以实现一大部分需求。然后说这个的不足,如果我们没有对象,应该怎么去调用那个方法返回一个0值呢?还有如果我们的对象个数不为0,我们每次都需要手工调用,就如同我们当时想着自己初始化对象和析构对象而自己写的普通函数,这样很容易引出问题啊。所以编译器也针对解决这个问题提供了方法。

就是static成员变量,又叫做类变量。静态成员变量属于这个类,而不是属于某个对象,这个类的所有对象都共享这个变量,每个成员都可以访问。

说一下静态成员的变量定义和声明。类内只能声明一个静态成员变量,这个变量的定义和初始化必须在类的外部通过Type className::varName/Type className::varName=0。当我们没有一个对象的时候,可以直接通过className::varName直接访问。而且这个变量被static修饰了,所以分配在数据区,生命周期是整个程序运行期间

class A
{
public:
    static int a;
};
int A::a = 0;
int main()
{
    cout << A::a << endl;
    A t;
    t.a = 10;
    cout << A::a << endl;
}

静态成员函数还要简单一些,加一个static就行。公有的静态函数可以直接通过className::funcName()访问,也可是通过对象访问。但是静态成员函数的特点是可以通过类名访问,但是不包含this指针,也不能调用普通成员函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值