|
안녕하십니까? 남병철.레조입니다.
일단 클래스를 설계할때 생성자를 명시적으로 만들어 주면
그 클래스의 인스턴스가 만들어질때 인수가 있는 생성자 또는 없는 생성자를
사용할 수 있게되죠. 단, 이렇게 사용자가 명시적으로 만들게되면 기본생성자가
호출되지 않기때문에 직접 기본생성자(인수가 없는 생성자)를 만들어 주어야
합니다.
그럼 본론으로 들어가서...
Graphics::TBitmap*a=new Graphics::TBitmap;
이 부분은 객체를 만드는데 인수가 없네요. 객체 명만 있으니 컴파일러는 인수가없는
생성자를 호출 할 것입니다.
Graphics::TBitmap*a=new Graphics::TBitmap();
여기서는 ()를 사용했지만 역시 생성자에 전달할 인수가 괄호않에 없네요.
결국 인수없는 생성자를 호출하게 되겠네요.
결론은 클래스에 생성자가 전혀 선언되어 있지 않던가 아니면 반드시 인수없는 생성자가
선언되어 있어야하고 그래야 위의 코드가 먹히게 됩니다.
또한 그러한 이유때문에 결국 위의 코드는 같은 의미가 되겠네요.
만해 님이 쓰신 글 :
: 안녕하세요 만해 입니다.
:
: 오늘 드뎌 면접을 보러 갑니다.
:
: 부디 잘 되기를~
:
: 질문이 있는데요
:
: 저는 보통 동적 객체 생성을 하게 되면
:
: Graphics::TBitmap*a=new Graphics::TBitmap;
:
: 이런식으로 많이 합니다.
:
: 그런데 오늘 Tip란에 있는 LED 만들기를 보니깐
:
: 밑의 소스 처럼 되어 있네요
:
: Graphics::TBitmap*a=new Graphics::TBitmap();
:
: 이 두가지 방식의 차이점을 제가 대충 알기는 한데 정확히는 모르겠네요
:
: 제가 사용하는 방식은 그냥 객체만 생성하고,
:
: 팁 란에 올라와 있는 방식은 객체 생성후 생성자를 호출한다는 의미 같은데
:
: 맞는지요?
:
: 그리고 이게 실제 프로그래밍에선 어떠한 영향을 미치는지 좀 알고 싶습니다.
:
: 고수님들의 답변 바랍니다.
|