先说结论:有传入参数时调用带有默认参数的函数不再调用默认参数的构造函数,无传入参数时会调用默认参数的构造函数
测试环境:VS2017,解决方案配置Debug,x86,禁用优化
main.cpp
//...
TestClassC CInstance;
CInstance.TestFunc();
TestStruct StructValue;
CInstance.TestFunc(StructValue);
//...
ClassTestA.h
struct TestStruct{
TestStruct():a(0)
, b(0)
{}
int a, b;
};
class TestClassC {
public:
TestClassC() {};
~TestClassC() {};
void TestFunc(TestStruct Value = TestStruct()) {};
};
运行时反汇编截图