2.0 C++远征:静态
静态
二、静态
关键字:static
“静态”使用场景:用作全局的。
1.静态数据成员
依赖于类,并不依赖于对象。
所开辟的内存并不在对象中。
对象声明多个,但静态数据成员只会有一份。
普通数据成员依赖于对象,对象析构则不存在。
// Tank.cpp
class Tank {
public:
Tank() {
s_iCount++;
}
~Tank() {
s_iCount--;
}
static int getCount() {
return s_iCount;
}
static int s_iCount;
private:
string m_strCode;
};
int Tank::s_iCount = 0; // 初始化
// main.cpp
int main() {
// 通过类的访问方法
cout << Tank::getCount() << endl;
cout << Tank::s_iCount << endl;
// 通过对象的访问方法
Tank tank;
cout << tank.getCount() << endl;
cout << tank.s_iCount << endl;
}
2.静态成员函数
3.静态使用注意事项
- 静态数据成员必须单独初始化;
- 静态成员函数不能调用非静态成员函数和非静态数据成员;
- 静态数据成员只有一份,且不依赖对象而存在;
- 静态成员函数上不允许修饰符。