c++——静态成员函数

本文介绍了C++类中的静态成员变量和静态成员函数的概念,强调了它们在共享数据和简化代码维护方面的优势。通过银行账户类的例子,解释了静态成员如何用于统一管理所有实例的利率。同时,阐述了静态成员函数作为唯一能修改静态成员变量的途径,并展示了其用法。最后,提供了一个实际示例来说明静态成员的运用。
摘要由CSDN通过智能技术生成

静态成员的定义:

静态成员是在类中定义的一个成员变量,和普通成员函数不同的地方是在声明类型之前加入了关键字static,如:

class Account{
public:
private:
    std::string name;
    int cash;
    static int interest;
};

静态成员函数的定义:

静态成员函数和静态成员变量类似,只是在普通成员函数前面加入了关键字static:如:

class Account{
public:
    static void SetInterest(int insterest_);
private:
    std::string name;
    int cash;
    static int interest;
};

为什么要使用静态成员函数:

如前面代码中的例子,在一个银行账户的类中声明了一个静态成员变量:利率(insterest),对于每一个实例化的对象来讲,利率应该是一样的,且利率有变化的可能性,这样假如我们实例化了多个银行账户,如果没有静态成员变量的话那么当利率变化之后每一个实例化的银行账户都需要去重新设置利率,这样就会非常麻烦,如果能够将实例化的对象都共同享有一个利率,变化的时候都变化了那就方便多了。

静态成员变量就是因为有这些场景的存在而产生的,它不依赖实例化对象的存在,所有实例化共享一个静态成员函数,当静态成员函数发生改变的时候所有的实例化对象的静态成员变量的值都会改变。普通的成员函数无法访问静态成员变量, 那需要怎么样去改变静态成员变量的值呢?就需要静态成员函数。静态成员函数专门用来改变静态成员变量的值。哪怕没有一个实例化的对象存在,静态成员函数也是存在的。

静态成员函数的用法:

具体使用方法如下:

class Account{
public:
    static void SetInterest(int insterest_);
private:
    std::string name;
    int cash;
    static int interest;
};

void Account::SetInterest(int insterest_){
    interest = interest_;
}

int Account::interest=0;

首先必须在定义类的文件中对静态成员变量进行一次初始化,否则会报错。

对于访问静态成员函数,和普通的成员函数访问方法一致,可以有类名,对象名,指针::成员名,引用.成员名等方法。

静态成员实例:

class Account{
public:
    static void SetInterest(int insterest_);
    Account():Account(std::string name_, int cash_){}
    Account(std::string name_, int cash_){
        name = name_;
        cash = cash_;
    }
private:
    std::string name;
    int cash;
    static int interest;
};

void Account::SetInterest(int insterest_){
    interest = interest_;
}

int Account::interest=0;


int main(){
    Account a1{"Bob", 100}, a2{"Jack", 50}; //此时两个账户中的interest == 0
    a1.SetInterest(0.05); //此时两个账户中的interest == 0.05
    return 0;
    
}

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值