不同点
- 非静态成员函数:可以直接访问静态成员变量,因为非静态成员函数在对象的上下文中执行,通过对象的this指针可以隐式访问类的静态成员变量。
- 静态成员函数:也可以直接访问静态成员变量,静态成员函数不依赖于任何对象实例,直接通过类名或对象名(但不推荐使用对象名,因为静态成员函数与对象无关)访问静态成员变量。
示例代码
#include <iostream>
class MyClass {
public:
static int staticVar; // 静态成员变量声明
// 非静态成员函数
void nonStaticFunc() {
std::cout << "Non - static function accessing static variable: " << staticVar << std::endl;
}
// 静态成员函数
static void staticFunc() {
std::cout << "Static function accessing static variable: " << staticVar << std::endl;
}
};
int MyClass::staticVar = 42; // 静态成员变量定义
int main() {
MyClass obj;
obj.nonStaticFunc(); // 通过对象调用非静态成员函数
MyClass::staticFunc(); // 通过类名调用静态成员函数
return 0;
}