美文网首页
C++类的线程函数为什么要加static修饰

C++类的线程函数为什么要加static修饰

作者: mengfanle | 来源:发表于2020-04-26 13:49 被阅读0次

首先看下面这个类

class CMyTest
{
public:
CMyTest();
~CMyTest();

DWORD   Start();
static DWORD WINAPI ThreadFun(LPVOID);

// ....

};

void main()
{
CMyTest test;
// .....
}

ThreadFun(LPVOID) 为什么要加static修饰呢!
原来非静态成员函数都会在参数列表中加上一个this指针为为参数, 这样的话你写的线程函数就不符合调用规定了.

比如 DWORD WINAPI ThreadFun(LPVOID); 是非静态的,实际编译后,就会变成
DWORD WINAPI ThreadFun(LPVOID, CMyClass *this);

这个函数就明显不能作为线程的函数了, 因为多了个参数.所以编译就过不了了.
加上static修饰后,类的成员函数就不会被加上默认的this参数,所以就符合调用规定了。

相关文章

  • C++类的线程函数为什么要加static修饰

    首先看下面这个类 class CMyTest{public:CMyTest();~CMyTest(); }; vo...

  • 2018-09-17

    c++中需注意的点 c++ sort函数在类内使用是,第三个参数也就是cmp函数若写在类内必须加static;le...

  • Unity面试题1

    1.在类的构造函数前加上static会报什么错?为什么? 答:在构造函数如果有public修饰的静态构造函数时会报...

  • C++ const用法

    一 修饰类 C++中const修饰类主要包括3个部分:数据成员,成员函数,对象。 数据成员const 修饰类的成员...

  • static、final关键字

    为什么static 和 final要一起用,来修饰变量? static 的含义 当前类只有一个,这个类的所有对象共...

  • C#之static(静态方法 静态类 静态函数)

    1.简介static static意思是静态,可以修饰类、字段、属性、方法,但不能用于索引器、析构函数或类以外的类...

  • Java并发之synchronized

    Java多线程同步关键词是常用的多线程同步手段。它可以修饰静态类方法,实例方法,或代码块。修饰static静态方法...

  • Unity面试刷题库

    C#问题 1.在类的构造函数前加上static会报什么错?为什么? 答:在构造函数如果有public修饰的静态构造...

  • C++研发工程师笔试题/面试题(11-20)

    11. C++中const关键字作用有哪些? 定义常量 修饰函数形式的参数 修饰函数的返回值 修饰类的成员函数,表...

  • static&&this

    static 静态的 所有static修饰的类都是类级别的。 所有static修饰的都是采用类名.方式访问。 st...

网友评论

      本文标题:C++类的线程函数为什么要加static修饰

      本文链接:https://www.haomeiwen.com/subject/hdidwhtx.html