Bazı garip kodlar buldum ...Varsayılan parametre değeri kodda tanımlandığında, arama alanında görünmüyorsa ne olur?
//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);
Açıkçası Consumer.cpp
ClassA.h
ve ClassA.cpp
içermediğinden, derleyici parametrenin varsayılan bir değere sahip olduğunu göremeyecektir.
Yöntem uygulamasının imzasındaki ClassA::Enable
'un beyan edilen varsayılan değeri ne zaman etkindir? Bu, yalnızca ClassA.cpp
içeren dosyalar içinden yöntem çağrıldığında olur mu?
Bunu kim işaretledi? Beni işaretlerseniz, neden söyle, en azından düzeltemem. –
Aslında, bunu işaretleyen bendim ve bunun sebebi, OP'nin açık bir şekilde, tanımı doğru olmayan beyanda yer almak olduğunu bilmesiydi. OP, böyle bir şeyi tanımlamanın nasıl bir etki yarattığını merak ediyor ve soruyu tam bir şekilde okumadan cevapladınız. Ve evet, onu işaretlemenin sebebini bilmemeniz için üzgünüm. Bunu yapmalıydım. – Aamir
OP, beyanda yer almaktan hiç bahsetmedi, bu yüzden bahsettiği görünürlük problemine bir çözüm önerdim. –