类的静态成员
2023年12月21日 2023年12月21日
使用关键字static
不属于任何对象. 独立于任何对象, 和所有对象共通, 都可以使用
可以是静态数据成员, 也可以是静态函数成员
静态函数成员
- 无this指针
- 不能声明成const
定义静态函数成员
只在声明时使用static关键字
1class Account 2{ 3public: 4 void calculate() { amount += amount * interestRate; } 5 6 static double rate() { return interestRate; } 7 static void rate(double); 8 9private: 10 // 每个Account对象包含两个数据成员,owner和amount 11 string owner; 12 double amount; 13 14 // 只存在一个interestRate对象,被所有Account对象共享 15 static double interestRate; 16 17 static double initRate(); 18}; 19 20void Account::rate(double newRate) // 无static关键字 21{ 22 interestRate = newRate; 23}
静态数据成员
静态数据成员在整个继承体系中只有一个实例
可以是不完全类型
因为静态数据成员不属于某个对象,常量成员函数中可以对其执行写操作
定义静态数据成员
不由类的构造函数定义
在类的外部定义. 只能被定义一次
建议在把静态数据成员的定义和类的实现放在一起
1// interestRate和initRate()都是私有成员,但和私有成员函数一样,可以在类外定义 2// 和其他成员的定义一样,interestRate的定义可以访问类的私有成员 3// 同样,无static关键字 4double Account::interestRate = initRate();
可以将静态数据成员用作默认实参
访问静态成员
可以通过作用域运算符访问 ::
也可以通过类对象访问
在成员函数中可以直接访问