는 다음 예에서 봐 주시기 바랍니다 :파생 클래스에서 기본 생성자없이 복사 생성자를 선언하는 방법은 무엇입니까?
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; }
};
이 코드는 기본 클래스에 대한 기본 생성자가 없음을 나에게 오류를 던지고 유지합니다. 내가 그것을 선언 할 때 모든 것이 괜찮습니다. 하지만 내가하지 않으면 코드가 작동하지 않습니다.
기본 클래스에서 기본 생성자를 선언하지 않고 파생 클래스에서 복사 생성자를 선언하려면 어떻게해야합니까?
Thnaks. 난 단지 그 사본의 ctor를 호출하기 때문에 파생 된 매개 변수에 기본 매개 변수를 설정
Derived(const Derived &d) :
Base(d)
{
std::cout << "copy constructor\n";
}
참고 :
일단 매개 변수화 된 생성자가 있으면 컴파일러는 클래스의 기본 생성자를 제공하지 않습니다. – aProgrammer