c++ 静态成员和静态方法问题

2025-05-21 08:48:36
推荐回答(3个)
回答(1):

静态方法可以在类没有实例的情况下调用。非静态的成员必须在实例化的类中才能存在。

回答(2):

非静态相当于 车行里的车,你买了你才能开
静态相当于 车行展示的车,谁都能开

回答(3):

静态方法是属于类的,而不属于某个具体的对象,它可以在没有实例对象的情况下就存在,而非静态成员是随实例对象的产生而产生的,静态方法没有this指针,这就决定了它无法访问类的非静态成员

举个例子:
class A
{
int m_a;
public:
A(){ m_a=0;}
void static f() {m_a=6;}
//这个m_a=6实际上是this->m_a=6;而静态成员是没有this指针的
//因为生成这个静态方法时还没有实际对象,所以m_a=6是不行的
}
但是可以在静态方法中生成该类的一个对象,然后访问该对象的成员,比如上个例子中的f()
void static f() { A a; a.m_a=6;}