类的静态成员变量以及静态成员函数

类静态成员的作用:

假设存在多个string对象,即string A ;和 string B ; 若string类存在静态成员static c,则针对于该变量A,B均共享同一个c,其实可以等同于在一个家庭中你和你的父母,女朋友共享同一个腾讯视频会员账号。

类静态成员的使用

如下述代码,在类A中申明了静态变量a,此时不能进行初始化,是因为类申明只描述如何分配内存,但并不分配内存,类分配内存是在原文件创建对象后进行分配。

// A.h   A的头文件
class A {
private :
 static int a ;
}

类中静态变量的申明应该在实现文件中

// A.cpp
static int a = 3;

即初始化是在方法文件中,而不是在类申明文件中,这是因为类申明位于头文件中,程序可能将头文件包括在多个文件中。如果在头文件中进行初始化,将出现多个初始化副本引起问题。

类静态成员的例外

将静态类成员申明为const 便可以在类申明中进行初始化。

// A.h   A的头文件
class A {
private :
 const static int a = 1;
}

静态成员函数

可以将成员函数声明为静态的(函数声明必须包括关键字static,但如果函数定义是独立的,则其中不能包含static),这样做有两个后果。

首先不能通过对象调用静态成员函数;实际上静态成员函数甚至不能使用指针this。如果静态成员函数是在公有部分声明的,则可以使用类名与区域运算符来调用它。例如,可以给A类添加静态成员函数Returna(),方法是在类声明中添加如下原型/定义:static int A::Returna() {return a;}。调用它的方法如下:int coutna = Returna() ;最后由于静态成员函数和特定对象无关,因此只能使用静态数据成员。例如静态成员函数Returna()可以调用静态成员a。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值