Aşağıdaki örnekte bir göz atın:Kopya oluşturucu, türetilmiş sınıfta, temelde varsayılan construcor olmadan nasıl bildirilir?
class Base
{
protected:
int m_nValue;
public:
Base(int nValue)
: m_nValue(nValue)
{
}
const char* GetName() { return "Base"; }
int GetValue() { return m_nValue; }
};
class Derived: public Base
{
public:
Derived(int nValue)
: Base(nValue)
{
}
Derived(const Base &d){
std::cout << "copy constructor\n";
}
const char* GetName() { return "Derived"; }
int GetValueDoubled() { return m_nValue * 2; }
};
Bu kod temel sınıf için varsayılan contructor olduğunu bana bir hata atma tutar. Bunu ilan ettiğimde her şey yolunda. Ama yapmadığımda, kod çalışmıyor.
Temel sınıfta varsayılan contructor bildirmeden türetilmiş bir sınıftaki bir kopya oluşturucuyu nasıl bildirebilirim?
Yılanlar. Ben sadece bir kopya ctor denir, çünkü bir Türetilmiş parametresine Baz parametresini döndü
Derived(const Derived &d) :
Base(d)
{
std::cout << "copy constructor\n";
}
Not:
Derleyici, herhangi bir parametreli yapıcıya sahip olduğumuzda, sınıf için varsayılan yapıcıyı sağlamaz .. – aProgrammer