静态类成员作为线程函数访问类成员问题

2024-11-16 07:50:28
推荐回答(2个)
回答1:

类的静态成员函数本来就是类方法,和实例无关,所以引用aa和bb会出错,编译也过不了啊
mfun虽然是普通成员函数(类的实例方法),但是调用的时候实际上会有一个this指针作为参数,所以在线程中调用的函数原型实际上是void mFunc(C* thisPointer),你起线程的时候除了传入函数地址外,还要把this指针作为参数传入

回答2:

类的静态成员函数本来就是类方法,和实例无关,所以引用aa和bb会出错,编译也过不了啊
mfun虽然是普通成员函数(类的实例方法),但是调用的时候实际上会有一个this指针作为参数,所以在线程中调用的函数原型实际上是void mFunc(C* thisPointer),起线程的时候除了传入函数地址外,还要把this指针作为参数传入。
声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数。
在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。