008_linuxC++之_类的静态变量和静态函数

(一)看程序

#include <iostream>
#include <string.h>
#include <unistd.h>

using namespace std;    

class Person {
private:
    static int cnt;        /*静态变量,在33行中初始化为0*/
    char *name;        

public:

    static int getCount(void);     /*静态函数*/

    Person() {    /*当运行一次结构体定义时候就会运行一次这个,具体看007构造函数*/
        name = NULL;
        cnt++;
    }
    ~Person()        /*释放时候自动运行,看007构造函数*/
    {
        cout << "~Person()"<<endl;
    }

};

int Person::cnt = 0; /* 定义和初始化 */

int Person::getCount(void) 
{ 
    return cnt; 
}


int main(int argc, char **argv)
{
    Person p[100];
    cout << "person number = "<<Person::getCount()<<endl;    /*静态变量输出100*/
    cout << "person number = "<<p[0].getCount()<<endl;        /*静态变量输出100*/
    cout << "person number = "<<p[1].getCount()<<endl;        /*静态变量输出100*/

    return 0;
}

main.cpp

运行结果
在这里插入图片描述
(二)静态函数中不能调用非静态的变量
如,name的初始化在静态函数中使用会编译出错

在这里插入图片描述
编译结果
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值