게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C++상속 과 소멸자 관련 질문있습니다.
게시물ID : programmer_11398짧은주소 복사하기
작성자 : 도마뱀장로
추천 : 0
조회수 : 460회
댓글수 : 6개
등록시간 : 2015/06/18 18:47:36
옵션
  • 베스트금지
  • 본인삭제금지
class String
{
public:
String(char *str)
{
len_ = strlen(str);
p_str_ = new char[len_ + 1];
strcpy_s(p_str_,20, str);
cout << "String 생성자" << endl;
}
~String() { delete[] p_str_; cout << "String 소멸자" << endl; }

private:
char *p_str_;
int len_;
};

class MyString : public String
{
public:
MyString(char *str1, char *str2) : String(str1)
{
mylen_ = strlen(str2);
p_mystr_ = new char[mylen_ + 1];
strcpy_s(p_mystr_, 20, str2);
cout << "MyString 생성자" << endl;
}
~MyString() { delete[] p_mystr_; cout << "MyString 소멸자" << endl; }

private:
char *p_mystr_;
int mylen_;
};

int main()
{
String *p_str = new MyString("String", "MyString");
delete p_str;

return 0;
}
이렇게 될때 메인에 딜리트 부분에서 스트링의 소멸자가 사용되는데 오류가 나서 안되더라구요 메인의 p_str한테 p_str_가 존재하니까 소멸자가 사용되서 정상적으로 소멸해야 되는거 아닌가요? 출력문 전에 오류나네요.
여기서 스트링의 소멸자가 사용되는데 마이스트링의 소멸자를 사용하게 하는 방법이 뭐죠?
스트링 소멸자에 버추얼 붙이면 된다는데 안되더라구요 마이스트링의 소멸자랑 이름이 같지 않아서 버추얼 붙여도 소용 없지 않나요?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호