static

来源:互联网 发布:php上传文件函数 编辑:程序博客网 时间:2024/05/22 08:13

1.      static成员变量与static成员函数使用注意点及原因。

2.      如何修改static成员变量的值。

3.      为什么会使用static数据成员呢?主要是因为可以节省空间和时间的浪费。例如CS游戏中你需要每一个人都知道当前状态下你的队友数目及敌人数目,大家可以共享这些数据,而如果人手一份数据,那必然会导致不必要的浪费。

 

1)  static只被该类所有的成员共享—>类内声明,类外(.h\.cpp文件均可)定义

2)  static只有1个地址—>只在声明(成员变量和函数均如此)时使用关键字

3)  static成员变量的地址在编译时确定(普通变量的地址实例出现后确定)—>非静态成员函数可以调用静态成员和静态成员函数,但是静态成员函数只能调用静态变量

4)  两者区别只是地址单一还是可以多个—>static成员可以动态赋值

.h文件:

class SavingsAccount{public:SavingsAccount(double a):savingsBalance(a){};double calculateMonthlyInterest();void print();static void setAnnualInterestRate(double);private:static double annualInterestRate;double savingsBalance;};

.cpp文件:

#include<iostream>using namespace std;#include"SavingsAccount.h"double SavingsAccount::calculateMonthlyInterest(){return savingsBalance*annualInterestRate/12.0;}void SavingsAccount::setAnnualInterestRate(double a ){annualInterestRate=a;}void SavingsAccount::print(){cout<<calculateMonthlyInterest()+savingsBalance<<"\n";}

.cpp文件:

#include<iostream>#include"SavingsAccount.h"using namespace std;double SavingsAccount::annualInterestRate=0.03;int main(){SavingsAccount saver1(2000.00);SavingsAccount saver2(3000.00);saver2.print();saver1.print();double s;cin>>s;saver1.setAnnualInterestRate(s);saver1.print();saver2.print();}

输出:

(其中0.04是自己输入的s的值)



0 0