C++静态成员变量和静态成员函数的使用
1.静态成员变量:定义在类中的静态成员,以static关键字初始化
和成员变量区别:a.可以通过类名::变量名进行调用,可访问性还是由(public,private,protected)进行限制 例如下面的
mystaitcClass::_id,protected属性内容无法直接进行访问,若要直接访问需要修改为public
2.静态成员函数:类似可以通过类名::函数名 进行调用
#ifndef MYSTAITCCLASS_H #define MYSTAITCCLASS_H class mystaitcClass { public: mystaitcClass(); static int getID(); protected: static int _id; }; #endif // MYSTAITCCLASS_H
#include "mystaitcclass.h" int mystaitcClass::_id = 1; mystaitcClass::mystaitcClass() { } int mystaitcClass::getID() { if (_id <= 255 && _id >= 1) { _id++; } else { _id = 1; } return _id; }
#include <QCoreApplication> #include <QDebug> #include"mystaitcclass.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); mystaitcClass myclass1; mystaitcClass myclass2; //mystaitcClass::_id qDebug()<<myclass1.getID()<<endl; qDebug()<<myclass2.getID()<<endl; return a.exec(); }
注意:静态变量初始化问题
如果头文件被多个文件引用,静态变量不能初始化在头文件中而应在cpp文件中初始化,否则会造成变量重定义