C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[51992] Re:Re:C++ 다중 상속시 복사 생성시 사용 방법
열씸! [cappuccino] 1172 읽음    2008-01-22 10:31
상속받은 클래스의 Constructor 에 Argument로 전달받은 내용을 할당하는 부분이 필요합니다.
GraphicsPath1::GraphicsPath1(GraphicsPath1 *arg){
*this = *arg;
}
처럼 말이죠.
이경우는 return new GraphicsPath1(*this); 가 아닌 return new GraphicsPath1(this);
처럼 Clone에서 불러 주셔야 할테고
return new GraphicsPath1(*this); 로 받으시려면 뭐 *arg대신 arg를 쓰시면 되겠지만...
내용이 많다면 스택을 이용해 많은 내용을 전달한다는게 오버헤드를 발생시키겠죠.

단, 클래스의 멤버중에 동적할당되거나 할당메모리의 포인터가 대입되는 멤버들이 있고,
해당 자원이 인스턴스당 하나만 존재해야 할때는 주소만 복사되는 형태가 의미 없으므로,
모든 동적할당코드를 Constructor안에 구현해 주셔야 합니다.
(그런 파트별 리소스들도 객체화 되어 있으면 조금 깔끔해 보이는 코딩이 될 수는 있죠.
하지만 구현시간의 압박은 증가될겁니다. 템플릿으로 찍어내 버리면 조금 편해질 수도 있지만
것도 제약사항들을 안고 있죠.)

김상면 님이 쓰신 글 :
: 질문의 요지가
:
: '생성자에서 상속받은 멤버의 초기화를 어떻게 하냐?' 이라면
:
: 대답은 간단합니다.
:
: '멤버 초기화 리스트를 사용하여라'
:
: 입니다.
:
:
:
:
:
: 문허니 님이 쓰신 글 :
: : 갑자기 복사생성자의 방법이 생각이 안나서 이렇게 글 씁니다.
: :
: : class GraphicsPath1 : public GrapihcsPath
: : {
: :     GraphicsPath1();
: :     GraphicsPath1(const GraphicsPath1&);
: :     ~GraphicsPath1();
: :
: :      GraphicsPath1* Clone();
: : };
: :
: : GraphicsPath1::GraphicsPath1(const GraphicsPath1&)
: : {
: :     // GraphicsPath1 속성 전달
: :    // ?? 상속한 GraphicsPath의 내용은 어떻게 복사하지요?
: : }
: :
: : GraphicsPath1* GraphicsPath1::Clone()
: : {
: :     return new GraphicsPath1(*this);
: : }
: :
: :
: : 대충 이렇게 되었을때, GraphicsPath를 상속받아서 사용하는데, GraphicsPath의 Clone을 하지 못하네요
: : 그래서 전달이 잘 안되는데, 어떻게 하면 상속한 GraphicsPath 내용도 Clone할 수 있는지요..

+ -

관련 글 리스트
51987 C++ 다중 상속시 복사 생성시 사용 방법 문허니 1092 2008/01/21
51988     Re:C++ 다중 상속시 복사 생성시 사용 방법 김상면 1006 2008/01/22
51992         Re:Re:C++ 다중 상속시 복사 생성시 사용 방법 열씸! 1172 2008/01/22
52018             Re:Re:Re:C++ 다중 상속시 복사 생성시 사용 방법 문허니 1617 2008/01/22
52027                 Re:Re:Re:Re:C++ 다중 상속시 복사 생성시 사용 방법 열씸! 1329 2008/01/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.