【发布时间】:2009-07-17 09:16:13
【问题描述】:
我发现了一些奇怪的代码...
//in file ClassA.h:
class ClassA {
public:
void Enable( bool enable );
};
//in file ClassA.cpp
#include <ClassA.h>
void ClassA::Enable( bool enable = true )
{
//implementation is irrelevant
}
//in Consumer.cpp
#include <ClassA.h>
....
ClassA classA;
classA.Enable( true );
显然,由于Consumer.cpp 只包含ClassA.h 而不是ClassA.cpp,编译器将无法看到该参数具有默认值。
方法实现的签名中声明的默认值ClassA::Enable什么时候会产生影响?仅当从包含ClassA.cpp 的文件中调用该方法时才会发生这种情况吗?
【问题讨论】: