No.1 正确的情况
No.2 错误的情况
#include <QtCore/QCoreApplication>
#include "staticrelated.h"
QString staticRelated::info = QString( "456" ) ;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv) ;
staticRelated *tst =new staticRelated( NULL ) ;
staticRelated::printInfo() ;
tst->printInfo2() ;
tst->setInfo() ;
staticRelated::printInfo() ;
staticRelated::info = QString( "modified2" ) ;
staticRelated::printInfo() ;
return a.exec() ;
}
No.2 错误的情况
#include <QtCore/QCoreApplication>
#include "staticrelated.h"
int main(int argc, char *argv[])
{
QString staticRelated::info = QString( "456" ) ; // error
QCoreApplication a(argc, argv) ;
staticRelated *tst =new staticRelated( NULL ) ;
staticRelated::printInfo() ;
tst->printInfo2() ;
tst->setInfo() ;
staticRelated::printInfo() ;
staticRelated::info = QString( "modified2" ) ;
staticRelated::printInfo() ;
return a.exec() ;
}
错误提示:
总结:
·对于static成员变量是否是private数据并没有影响,因为设定static成员变量初值时,不受任何存取权限的束缚。
·在使用static成员变量前,需要初始化,并且初始化操作要出现在全局变量作用空间。
·static成员变量的类型要出现在初始化语句中,因为这是初始化操作,不是赋值操作。static成员变量是在初始化(而不是在类声明时候)才定义出来的。