C++中的静态成员是比较特殊的存在,关于静态成员 有以下几点需要大家注意:
1.静态成员变量:
- 静态成员变量不依赖于任何类对象;
- 静态成员变量可以被任何对象调用;
- 静态成员变量可以被静态成员函数调用;
- 静态成员变量可以被非静态成员函数调用;
- 公有属性的静态成员变量可以通过类名来访问;
- 静态成员变量需要初始化;
2.静态成员函数:
- 公有属性静态成员函数可以通过类名来访问;
- 任何对象都可以访问静态成员函数;
- 静态成员函数可以访问静态成员变量;
- 静态成员函数不可以访问非静态成员变量;
静态成员函数和静态成员变量都可以导出DLL。
#pragma once
#include "saticparam_global.h"
#include<QString>
class SATICPARAM_EXPORT SaticParam {
public:
SaticParam();
//静态成员函数访问静态成员变量
static double getScore();
static bool getSex();
//非静态成员函数访问静态成员变量
void setAge(int a);
int getAge();
public:
static QString strName;
static int age;
private:
static double score;
static bool sex;
};
#include "SaticParam.h"
QString SaticParam::strName = QStringLiteral("张三");
int SaticParam::age = 19;
double SaticParam::score = 90.0;
bool SaticParam::sex = true;
SaticParam::SaticParam() {
}
double SaticParam::getScore() {
return score;
}
bool SaticParam::getSex() {
return sex;
}
void SaticParam::setAge(int a) {
age = a;
}
int SaticParam::getAge() {
return age;
}
调用:
qDebug()<<SaticParam::strName;
SaticParam* sp = new SaticParam;
qDebug()<<sp->getScore();
sp->setAge(36);
qDebug() << sp->getAge();
sp->age = 45;
qDebug() << sp->age;
输出:
"张三"
90
36
45
aaa