static:
(1)static成员数据:例如像银行IT系统中的利率,并不是每个用户拥有一份,而是所有账户都有统一的利率,可以加static,表明所有账户共有相同利率。
static成员数据要在class外定义。
例:class Account{
public:
static double m_rate;
static void set_rate(const double& x){m_rate=x;}
}
double Account::m_rate=8.0;
(2)static成员函数:没有this pointer。只能处理static类型的成员数据。
调用static函数的方式:
a.通过object调用,和普通成员函数一样。例如;
Account a;
a.set_rate(7.0);
b.通过class name调用,例如:
Account::set_rate(5.0);
单例模式:
class A{
public:
static A& getInstance(){return a;};
setup(){...}
private:
A();
static A a;
}
调用函数setup方式:A::getInstance().setup();
缺点:如果没有用到类A的唯一对象a,由于a在创建类是就存在并一直存在,将造成内存空间的浪费。
更好的写法:
class A{
public:
static A& getInstance();
setup(){...}
private:
A();
}
A& A::getInstance(){
static A a;
return a;
}
调用函数setup方式:A::getInstance().setup();
调用getInstance后a一直存在。
namespace:
(1)using namespace std;
cout<<...
cin>>...
(2)using std::cout;
cout<<...
(2)std::cout<<...