C++静态

来源:互联网 发布:网络方案 编辑:程序博客网 时间:2024/06/04 19:42

C++中的静态,两个概念静态数据成员和静态成员函数。

静态数据成员依赖于类,而不依赖于对象,也就是说即使不实例化对象,但作为一个静态数据成员,在内存中也存在,普通的数据成员不实例化就不存在。如以下例子

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;//不需要再加关键字static

静态数据成员有两种访问途径。

int main(){cout << Tank::getCount() << endl;//直接访问cout << Tank::s_iCount << endl;Tank tank;cout << tank.getCount() << endl;//通过对象访问cout << tank.s_iCount << endl;return 0;}

静态函数不能调用非静态的成员,因为static成员一直存在,但是如果没有实例化的话,就无法调用非静态的成员。

静态数据成员注意事项:

1. 要单独初始化;

2. 静态成员函数不能调用非静态成员和非静态函数;

2. 静态成员只有一份,不依赖对象而存在。


静态函数能不能加const呢?

答案是不能,因为const修饰的是this指针,静态函数根本没有this指针,所以不可能使用。


0 0
原创粉丝点击