c++——静态成员函数

it2025-08-21  6

静态成员的定义:

静态成员是在类中定义的一个成员变量,和普通成员函数不同的地方是在声明类型之前加入了关键字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; }

 

最新回复(0)