静态成员函数
#include <iostream>
using namespace std;
class Person{
public:
//静态成员函数特点:
//1、程序共享一个函数
//2、静态成员函数只能访问静态成员变量
static void func(){
cout<<"func调用"<<endl;
m_A=100;
//m_B=100;错误,不可以访问非静态成员变量
}
static int m_A;
int m_B;
private:
//静态成员函数也是有访问权限的
static void func2(){
cout<<"func2调用"<<endl;
}
};
int Person::m_A=10;
void test01(){
//静态成员变量的两种访问方式
//1、通过对象
Person p1;
p1.func();
//2、通过类名
Person::func();
}
int main() {
test01();
return 0;
}
-
静态成员函数:
func()
和func2()
是Person
类的静态成员函数。静态成员函数不依赖于具体的对象实例,而是属于类本身,因此可以通过类名直接调用,也可以通过对象调用。静态成员函数的特点是只能访问静态成员变量和其他静态成员函数,不能直接访问非静态成员变量或非静态成员函数。 -
静态成员变量:
m_A
是Person
类的静态成员变量,它属于类而不是类的对象。静态成员变量在内存中只有一份拷贝,被所有类的对象共享。静态成员变量必须在类外初始化,通常在类的实现文件中进行初始化。 -
访问控制:类中的
m_B
被声明为公有(public
)成员变量,可以被外部访问。但func2()
被声明为私有(private
)成员函数,只能在类的内部访问,外部无法调用。 -
类的使用:在
main()
函数中通过创建Person
类的对象p1
,并调用对象的成员函数func()
,展示了如何通过对象来访问静态成员函数。而在test01()
函数中,通过类名Person::func()
直接调用静态成员函数。