C++基础(11)静态成员

13 篇文章 0 订阅

一.静态数据成员

       当一个类的多个对象需要进行数据共享时,可以通过静态数据成员和静态成员函数进行实现。   

       例如,学生人数是和每一个学生对象有关的(每次新建一个学生对象,学生人数都应该增1),但它又不能只属于某一个学生对象,这时就可以将学生人数说明成类的静态数据成员,以实现学生对象之间的数据共享。

例程:利用静态数据成员统计对象个数

……
class CStudent 				//学生类
{	
    static unsigned long m_nCount; 	//学生人数,静态数据成员
   .....
    CStudent::CStudent()
    {
       .....
       m_nCount++;///每调用一次构造函数,学生人数就加1
    }
    CStudent::~CStudent()
    {
    	delete [] m_strName;
    	delete [] m_strID;
	    delete [] m_strMajor;
	    m_nCount--;
    }
    ....
}

unsigned long CStudent::m_nCount = 0; 	 ///给全局变量初始化为0
int main()

二.静态成员函数

   静态成员函数的主要作用是访问静态数据成员。通过静态成员函数,可以在对象建立之前进行静态数据成员的访问。

    声明:static unsigned long GetCount();     //静态成员函数

    定义:unsigned long CStudent::GetCount() {     return m_nCount; }

    调用:cout<<"学生人数为:"<<CStudent::GetCount()<<endl; 

(1)静态成员函数的声明形式为:     static 返回类型 静态成员函数名(参数表);

(2)当静态成员函数是公有成员函数时,主要有以下三种调用形式:     ① 类名::静态成员函数名(实参表)     ② 对象名. 静态成员函数名(实参表)     ③ 对象指针名->静态成员函数名(实参表)     由于类的静态成员函数是类的一部分,而不是某个对象的一部分,建议在进行静态成员函数调用时,使用第①种形式,以方便对程序的阅读与理解。

(3)静态成员函数与非静态成员函数的主要区别在于:非静态成员函数有this指针,而静态成员函数没有this指针。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值