Timothy6
Timothy6
采纳率0%
2020-04-17 22:51

求大佬解答:关于C++构造函数和析构函数清栈的问题!

类A和它的构造函数,采用__cdecl方式:

class A

{

__cdecl A() {}

};


VS2019会给出警告:warning C4166: 构造函数/析构函数的非法调用约定,
如果改成 class A { __stdcall A() {} };,就不会产生任何警告,貌似构造函数和析构函数不能是__cdecl
不过在gcc上编译却不会给出警告,

但是 调用反汇编会发现,即使构造函数强行声明为__cdecl,生成的构造函数的反汇编仍然含有ret,即仍然是__stdcall的。
这说明,构造函数是不能为__cdecl的

求助大佬原因

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答