先说结论:有传入参数时调用带有默认参数的函数不再调用默认参数的构造函数,无传入参数时会调用默认参数的构造函数
测试环境: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()) {};
};
运行时反汇编截图

本文探讨了在C++中,当调用带有默认参数的函数时,是否调用默认参数构造函数的问题。通过具体代码示例,解释了在有无传入参数的情况下,函数如何选择构造函数进行调用。
1397

被折叠的 条评论
为什么被折叠?



