C++ 作用域与生命周期 静态static

1⃣️静态局部变量   作用域不变,生命周期延长至程序运行结束

2⃣️静态全局变量    作用域变小,不能extern引用,生命周期不变

类中的静态成员:成员函数,成员变量都是使用对象来进行调用,

也有些数据成员和成员函数属于整个类,称这些成员为类的静态成员(这些成员不属于对象,创建对象时不会为静态成员开辟空间)

静态成员整个类只有一份空间(静态空间)

Emploee::pay(50);//静态成员函数的调用=>类名::静态成员函数名称

1⃣️类的静态成员变量初始化在类外         类型名  类名::  变量初始化    (int Student:: allStudent=0;

2⃣️静态成员(函数、变量)属于类,非静态成员则属于某一个对象

3⃣️静态成员函数的调用    Emploee::pay(50);//静态成员函数的调用=>类名::静态成员函数名称

 

类占用空间大小计算方式:成员变量的累加(自动补齐),静态成员变量不计算在内


静态成员函数不能访问非静态成员变量与非静态成员函数,而普通成员函数技能访问静态成员变量,又能访问到静态成员函数


友元函数:函数中可以直接访问其私有成员(friend point middle(point &p1,point &p2);)//不是成员函数,是普通函数

友元类:若lA是类B的友元类,则A的成员函数均为类B的友元函数(1⃣️单向2⃣️不传递)

#include <iostream>

#include <string>

using namespace std;

class Emploee{//员工类

    // 普通成员变量

    char *name;

    int ids;

    // 类的静态成员变量

    static int allNum;// 员工总人数

    static int totalPays;//员工总支出

public:

    Emploee(char *_name){//构造函数

        name=new char[strlen(_name)+1];

        strcpy(name, _name);

        allNum++;

        ids=allNum;//非静态成员函数调用静态成员变量

    }

    ~Emploee(){//析构函数

        if (name!=NULL) {

            delete []name;

            name=NULL;

        }

    }

    void display(){

        cout<<"name:"<<name<<endl;

        cout<<"id:"<<ids<<endl;

        cout<<"++++++++++++++\n";

    }

    

    

    // 类的静态成员函数

    static void pay(int onepay){

        totalPays+=onepay;//静态成员函数访问静态成员变量

        cout<<"all pay:"<<totalPays<<endl;

    }

    static void allPerson(){

        cout<<"all person:"<<allNum<<endl;

    }

};


// 类的静态成员变量初始化在类外

int Emploee:: allNum=0;

int Emploee:: totalPays=0;


int main(int argc, const char * argv[]) {

    Emploee e1((char*)"zhanghow");

    Emploee e2((char*)"lisi");

    Emploee e3((char*)"wangwu");

    Emploee e4((char*)"zhaosi");

    e1.display();

    e2.display();

    e3.display();

    

    Emploee::pay(50);//静态成员函数的调用=>类名::静态成员函数名称

    Emploee::pay(150);

    

    Emploee::allPerson();

    return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值