静态成员函数与类内静态变量相似,属于类,但是独立于对象存在,是共有的。而非静态成员函数属于类,依赖于对象。
静态成员函数没有存在对象的时候,是无法访问到依赖对象的非静态成员函数的,也不存在this指针。
静态成员函数若想访问某个对象的非静态成员函数,可以将对象传入静态函数中进行访问。
void* Thread::ThreadRoutine(void* arg) //arg为传入的对象
{
Thread* thread = static_cast<Thread*>(arg);
thread->Run();
if (thread->auto) // ThreadRoutine为静态成员函数,auto为非静态成员
return NULL;
}