靜態static:靜態數據和靜態函數,在內存中只有一份,不會隨著創建對象的數目的增加而增加
static數據:比如銀行的account類中,賬戶名是普通數據,100個對象會有100個賬戶名,但利率都是相同的,因此利率可以設置為static
static函數:static函數和其他一般成員函數相比,static函數沒有this指針,因此它不能處理類中的一般數據,只能處理static數據
static數據,需要在類外面進行定義。
調用static函數的兩種方式:(1)通過object調用(2)通過class name調用
class Account {
public:
static double m_rate;//聲明
static void set_rate(const double& x) { m_rate = x; }
};
double Account::m_rate = 8.0;//定義
int main() {
Account::set_rate(5.0); //通過class name調用
Account a;
a.set_rate(7.0); //通過object調用
}
單例模式的例子:
class A {
public:
static A& getInstance();
setup() { ... }
private:
A();
A(const A& rhs);
...
};
A& A::getInstance()
{
static A a;
return a;
}
類模板:template<typename T>
函數模板:template<class T>