Я нашел какой-то странный код...
//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
?