静态常数据成员
定义:
static const 数据类型 数据成员名;
初始化:
方法1:类内直接赋值初始化
方法2:类外赋值初始化
访问方式:
1.使用类名::静态常数据成员名访问数据成员。
2.在对象中使用对象名.静态常数据成员名、对象指针->静态常数据成员名进行访问。
注意:无论建立多少个类的对象,都只有一个静态成员的拷贝---实现同一类的不同对象的数据共享
静态常成员函数
定义:
static 返回类型 静态成员函数名(参数);
注意:
静态常成员函数在声明和定义时都不需要使用 const 关键字。这是因为静态成员函数与对象无关,它们不访问类中的非静态成员变量,也不会对对象进行修改,因此不需要使用 const 修饰符。
但是,如果你想在静态常成员函数中访问类的非静态成员变量或调用非静态成员函数,则需要将这些成员变量或函数声明为 const 成员。这样做的目的是确保在静态常成员函数内部不会改变类的状态。
访问方式
类名::静态成员函数名(实参表);
对象.静态成员函数名(实参表);
对象指针->静态成员函数名(实参表);
例
class MathUtils {
public:
static const double PI; // 静态常数据成员
static double calculateCircleArea(double radius) {
return PI * radius * radius;
}
static double calculateSquareArea(double side) {
return side * side;
}
};
const double MathUtils::PI = 3.14159; // 静态常数据成员的定义和初始化
int main() {
double circleArea = MathUtils::calculateCircleArea(5.0); // 调用静态常成员函数
double squareArea = MathUtils::calculateSquareArea(4.0); // 调用静态常成员函数
cout << "Circle Area: " << circleArea << endl;
cout << "Square Area: " << squareArea << endl;
cout << "PI: " << MathUtils::PI << endl; // 访问静态常数据成员
}