重要性质
- 静态数据成员类型可以是长廊、引用、指针、类类型等
- 类的静态成员存在于任何对象之外,不属于任何一个对象,对象共享
- 静态成员函数不能声明成const
- 不能在静态函数体内使用this指针
- 不能在类内部初始化静态成员
class Account {
public:
void calculate() { amount += amount*interestRate; }
static double rate() { return interestRate; }
static void rate(double);
private:
std::string owner;
double amount;
static double interestRate; //静态成员变量
static double initRate(); //静态成员函数
};
使用静态成员
double r;
r = Account::rate();
初始化静态函数和变量
void Account::rate(double newRate) {
interestRate = newRate;
}
double Account::interestRate = initRate();
类内初始化
const整数类型的类内初始值,但要求静态成员必须是字面值常量类型的constexpr
private:
static constexpr int period = 30; //period是常量表达式
double daily_tb1[period];
作为默认实参
class Screen {
public:
Screen& clear(char = bkground);
private:
static const char bkground;
};