[문법]c++ 객체생성관련 질문입니다.

이소희의 이미지

class Base

{

public:

   virtual void Function_A ()=0;

    virtual Base* Clone()=0;
};

 

class SubClass:public Base

{

public:

   void Function_A ()=0;

   Base * Clone() { return new SubClass(*this); } // <<= 질문 부분입니다.

};

 

[질문]

다음 1) 과 2)의 경우가 어떻게 틀린가요?

1) return new SubClass(*this);

2) return new SubClass;

pynoos의 이미지

불리는 생성자가 다릅니다.
1) 번은 복사 생성자가 불리겠고, 2)번은 기본 생성자가 불리겠지요.

생성자를 만들어서 테스트해보세요.

이소희의 이미지

Prototype Patterns를 하다가 윗 부분에서 막혔었는데
덕분에 이유를 알게 되었네요. 감사드립니다.
프로그래밍을 하면서도 , 제가 문법을 너무 소홀히 했었나보네요.
좋은 하루 되세요.

내 삶속에 던져진 나.